1.索引列上不能使用表达式和函数
2.索引列上不能进行算术运算
3.避免在索引列上使用is null和is not null(ps:索引只会告诉你什么有,不会告诉你什么没有)
4.尽量避免在where子句中使用"!="符号,以下操作符能使用索引:
<, <=, =, >, >=, between
5.尽量避免在where子句中使用or来连接条件
6.in和not in要慎用,否者会导致全表扫描
7.在使用like时,尽量不要在开头使用通配符,例如:“%xxx”,可以在后面使用:"xxx%"
8.不要使用类型转换,例如索引为int类型,赋值为字符类型,如下
select ……where 索引列 = 1;使用索引
select …… where 索引列 = '1';没有使用索引
通过explain查询计划可以查看sql执行情况,就能知道是否需要优化:explain select ……where……
也可以通过navicat查看
主要是查看 type,key,rows
type结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
key实际使用的键或索引,如果为null,则表示未使用任何索引
rows为扫描的行数