1.最左前缀匹配原则。
mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配。所以要尽量把“=”条件放在前面,把这些条件放在最后。
不会用到b的索引:
where a=1 and c>0 and b=2
会用到b的索引:
where a=1 and b=2 and c>02.当取出的数据超过全表数据的20%时,不会使用索引
3.如果使用数字作为字符,则数字需要加引号,否则mysql会自动在列上加数据类型转换函数
不使用索引
where mobile=18534874321
使用索引
where mobile=’18534874321’
4.字段加运算符不会使用索引。所以尽量把运算放在数值上
不使用索引:
SELECT ACCOUNT_NAME, AMOUNT FROM TRANSACTION WHERE AMOUNT +3000>5000;
使用索引:
SELECT ACCOUNT_NAME, AMOUNT FROM TRANSACTION WHERE AMOUNT >2000;5.ORDER BY中不能既有ASC也有DESC
不使用索引:
select * from t1 order by a asc, b desc; 混合ASC和DESC
其他注意事项
1.尽量避免使用select *2.尽量使用表连接(join)代替子查询select * from t1 where a in (select b from t2)3.性能方面,表连接 >(not) exists >(not) in