欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决like‘% str %’索引不被使用的方法

程序员文章站 2022-06-02 19:06:19
...

问题:解决like‘%字符串%’时索引不被使用的方法
解决方法:覆盖索引
新建表tbl_user

CREATE TABLE `tbl_user` (
  `id` int NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `email` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

插入字段

INSERT INTO `test`.`tbl_user`(`id`, `name`, `age`, `email`) VALUES (1, '1aa1', 21, '[email protected]');
INSERT INTO `test`.`tbl_user`(`id`, `name`, `age`, `email`) VALUES (2, '2aa2', 222, '[email protected]');
INSERT INTO `test`.`tbl_user`(`id`, `name`, `age`, `email`) VALUES (3, '3aa3', 265, '[email protected]');
INSERT INTO `test`.`tbl_user`(`id`, `name`, `age`, `email`) VALUES (4, '4aa4', 21, '[email protected]');

 SELECT name,age FROM tbl_user WHERE name like '%aa%';

解决like‘% str %’索引不被使用的方法

SELECT name,age FROM tbl_user WHERE name like 'aa%';
SELECT name,age FROM tbl_user WHERE name like '%aa';

解决like‘% str %’索引不被使用的方法




 EXPLAIN SELECT name,age FROM tbl_user WHERE name like '%aa%';

解决like‘% str %’索引不被使用的方法
#创建索引

CREATE INDEX idx_user_nameAge ON tbl_user(name,age);

创建索引之后再查一次

EXPLAIN SELECT name,age FROM tbl_user WHERE name like '%aa%';

解决like‘% str %’索引不被使用的方法

EXPLAIN SELECT id FROM tbl_user WHERE name like '%aa%';

解决like‘% str %’索引不被使用的方法

 EXPLAIN SELECT name FROM tbl_user WHERE name like '%aa%';

解决like‘% str %’索引不被使用的方法

 EXPLAIN SELECT age FROM tbl_user WHERE name like '%aa%';

解决like‘% str %’索引不被使用的方法

EXPLAIN SELECT name,age FROM tbl_user WHERE name like '%aa%';
	 EXPLAIN SELECT id,age FROM tbl_user WHERE name like '%aa%';
	  EXPLAIN SELECT id,name FROM tbl_user WHERE name like '%aa%';

解决like‘% str %’索引不被使用的方法
索引都没有失效



EXPLAIN SELECT * FROM tbl_user WHERE name like '%aa%';

解决like‘% str %’索引不被使用的方法
使用 * 时索引失效了

EXPLAIN SELECT name,age,email FROM tbl_user WHERE name like '%aa%';

解决like‘% str %’索引不被使用的方法