1、复合索引要遵循最左前缀原则
https://www.jianshu.com/p/76e5f7fe593e
2、复合索引列上不能有范围查询
索引为userId_mobile_billMonth
image.png
image.png
当userId使用范围查询时,mobile索引失效
3、不要在索引列上使用函数(replace\SUBSTR\CONCAT\sum count avg)、表达式、
计算(+ - * /):
EXPLAIN SELECT * FROM `t_mobilesms_12` WHERE userid = '2222' + '1'
image.png
4、like 条件中前面不能带%
EXPLAIN SELECT * FROM `t_mobilesms_12` WHERE userid like '%2222'
image.png
5、字符串不加引号,出现隐式转换
EXPLAIN SELECT * FROM `t_mobilesms_12` WHERE userid = 1
image.png
6、使用or
EXPLAIN SELECT * FROM `t_mobilesms_12` WHERE userid = '2222' OR mobile = '13281899972'
image.png
7、使用not like
EXPLAIN SELECT * FROM `t_mobilesms_12` WHERE userid NOT LIKE '2222'
image.png
mysql 8.0.15版本 != 、<> 不会引起索引失效