[Índice MySQL] Cómo hacer que el índice de consulta difusa no sea inválido y hacer que el campo pueda agregar% en ambos lados

Cuando usamos una consulta difusa para agregar un índice a SQL, debe agregarse a la derecha del campo, no a la izquierda oa ambos lados del campo, porque al hacerlo, todos serán inválidos, entonces, ¿cómo podemos agregarlos a ambos lados?

Primer ejemplo: la
siguiente figura es una tabla de base de datos

CREATE TABLE `tbl_user`(
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) DEFAULT NULL,
`age`INT(11) DEFAULT NULL,
`email` VARCHAR(20) DEFAULT NULL,
PRIMARY KEY(`id`)
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO tbl_user(`name`,`age`,`email`)VALUES('1aa1',21,'[email protected]');
INSERT INTO tbl_user(`name`,`age`,`email`)VALUES('2bb2',23,'[email protected]');
INSERT INTO tbl_user(`name`,`age`,`email`)VALUES('3cc3',24,'[email protected]');
INSERT INTO tbl_user(`name`,`age`,`email`)VALUES('4dd4',26,'[email protected]');

Agregue índices a los campos de nombre y edad:

CREATE INDEX idx_user_nameAge ON tbl_user(NAME,age)

Luego usamos explicar para probar:
Prueba 1: Consulta *

EXPLAIN SELECT * FROM tbl_user WHERE NAME LIKE '%aa%';

Inserte la descripción de la imagen aquí
Prueba 2: Índice de cobertura

EXPLAIN SELECT id,NAME,age FROM tbl_user WHERE NAME LIKE '%aa%';

Inserte la descripción de la imagen aquí
Aquí podemos ver que el índice no es inválido, y el uso de algunos de los tres campos anteriores no causará invalidación.
Prueba 3: Agregue otros campos, aquí no agregamos un índice al correo electrónico

EXPLAIN SELECT id,NAME,age,email FROM tbl_user WHERE NAME LIKE '%aa%';

Inserte la descripción de la imagen aquí
Podemos ver que el índice no es válido.

Por lo tanto, para resolver la consulta difusa, agregue% en ambos lados y el índice no es inválido, luego necesitamos cubrir el índice cuando consultamos, es decir, como en la prueba 2 anterior, por lo que tratamos de agregar índices a los campos que deben consultarse, y luego El uso de un índice de cobertura no hará que el índice deje de ser válido.

Supongo que te gusta

Origin blog.csdn.net/Pzzzz_wwy/article/details/106600213
Recomendado
Clasificación