通配符开头的模糊查询
like 查询以通配符开头时无法使用索引而使用全表扫描。
EXPLAIN SELECT * FROM staffs WHERE `name` like '%July%';
EXPLAIN SELECT * FROM staffs WHERE `name` like '%July';
通配符结尾的模糊查询
like 查询以通配符结尾可以使用索引,类型为范围(range)。
EXPLAIN SELECT * FROM staffs WHERE `name` like 'July%';
使用覆盖索引的模糊查询
使用覆盖索引可以解决 like 查询以通配符开头无法使用索引问题。
ALTER TABLE `tbl_user` ADD INDEX idx_user_nameAge(`name`, `age`);
EXPLAIN SELECT id FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT `name` FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT age FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT id,`name`,age FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT id,`name` FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT id,age FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT `name`,age FROM tbl_user WHERE `name` like '%July%';
超出覆盖索引范围的模糊查询
超出覆盖索引范围无法使用索引。
EXPLAIN SELECT * FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT id,`name`,age,email FROM tbl_user WHERE `name` like '%July%';
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。