Home Database Mysql Tutorial Situation causing MySQL index failure

Situation causing MySQL index failure

Feb 18, 2024 pm 06:02 PM
sql statement mysql index Poor index selection

Situation causing MySQL index failure

Several situations and code examples of MySQL index failure

Introduction:
In the MySQL database, the index is one of the important factors to improve query performance. However, sometimes we find that the index does not play the expected role, query performance is not improved, and even causes the query to become slower. The reason is probably that the index is invalid. This article will introduce several common situations that cause MySQL index failure and give corresponding code examples.

1. Use functions or expressions to perform operations on index columns
If function calls or expression operations are performed on index columns in the query statement, the index will become invalid and MySQL will not be able to use the index for fast processing. Inquire. The following is an example:

-- 创建表
CREATE TABLE `user_address` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 查询示例,索引失效
SELECT * FROM `user_address` WHERE YEAR(`address`) = 2022;
Copy after login

In the above code, due to the use of the YEAR function for the address column, MySQL cannot use the index idx_user_id, resulting in index failure and reduced query efficiency.

2. Using functions on index columns
Using functions on index columns will also cause index failure, such as the following example:

-- 查询示例,索引失效
SELECT * FROM `user_address` WHERE LEFT(`address`, 5) = 'China';
Copy after login

In the above code, due to the ## The #address column uses the LEFT function, which also prevents MySQL from using the index idx_user_id, causing the index to fail.

3. Use the LIKE operator for fuzzy query

When using the LIKE operator for fuzzy query, if it does not start with the % wildcard character, the index will become invalid. An example is as follows:

-- 查询示例,索引失效
SELECT * FROM `user_address` WHERE `address` LIKE 'Shanghai%';
Copy after login

In the above code, because the LIKE operator does not start with the % wildcard character, MySQL cannot use the index

idx_user_id, and the query performance decreases.

4. Use the OR keyword in query conditions

Use the OR keyword in query conditions. If the columns in each OR clause do not have an index, the index will fail. The example is as follows:

-- 查询示例,索引失效
SELECT * FROM `user_address` WHERE `user_id` = 1 OR `address` = 'Shanghai';
Copy after login
In the above code, since the two columns

user_id and address each have their own index, but in the two conditions connected by the OR keyword, respectively Different indexes are used, causing the index to become invalid.

Summary:

When using the MySQL database, we need to avoid the above scenarios that lead to index failure. When writing SQL statements, you should try to avoid performing function or expression operations on index columns, and use appropriate operators and connections to construct query conditions to ensure that the index can be effectively used in query operations and improve query performance.

References:

MySQL official documentation (https://dev.mysql.com/doc/)

(Note: The table structure and query statements in the above examples are only for demonstration , the actual situation may vary due to factors such as database version, index settings, etc.)

The above is the detailed content of Situation causing MySQL index failure. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to use the iif function in excel How to use the iif function in excel Mar 20, 2024 pm 06:10 PM

How to use the iif function in excel

How to query oracle database logs How to query oracle database logs Apr 07, 2024 pm 04:51 PM

How to query oracle database logs

How to use sql statement to query the storage structure of mysql database How to use sql statement to query the storage structure of mysql database Apr 14, 2024 pm 07:45 PM

How to use sql statement to query the storage structure of mysql database

How to export the queried data in navicat How to export the queried data in navicat Apr 24, 2024 am 04:15 AM

How to export the queried data in navicat

How to solve mysql database initialization failure How to solve mysql database initialization failure Apr 14, 2024 pm 07:12 PM

How to solve mysql database initialization failure

How to execute sql statement in mysql database How to execute sql statement in mysql database Apr 14, 2024 pm 07:48 PM

How to execute sql statement in mysql database

MySQL transaction processing: the difference between automatic submission and manual submission MySQL transaction processing: the difference between automatic submission and manual submission Mar 16, 2024 am 11:33 AM

MySQL transaction processing: the difference between automatic submission and manual submission

Comparison of similarities and differences between MySQL and PL/SQL Comparison of similarities and differences between MySQL and PL/SQL Mar 16, 2024 am 11:15 AM

Comparison of similarities and differences between MySQL and PL/SQL

See all articles