- 以%开头的LIKE查询
优化方案:首先扫描二级索引获取满足条件的PRIMARY KEY,在根据主键回表查询。
SELECT * FROM
(SELECT actor_id FROM actor WHERE last_name LIKE ‘%NI%’) tmp
INNER JOIN actor a ON a.actor_id
=tmp.actor_id
- 类型的隐式转换(字符转数字会失效,数字转字符不会失效)
例如:SELECT * FROM actor WHERE last_name=1; – 会失效
SELECT * FROM actor WHERE actor_id=‘1’; – 不会失效
-
联合索引不满足最左原则
-
MYSQL优化器估计使用索引比全部扫描要慢
-
使用or时,必须保证其前后都能有索引,如果其中任一不包含索引都会导致索引失效
6.对索引列运算,运算包括(+、-、*、/、!、<>、%、like’%_’(%放在前面)、or、in、exist等),导致索引失效。 -
sql中使用函数