1.通过explain 解释执行计划,查看sql相应的索引有没有执行,尤其是where条件后面的条件,和通过join连接表时的关联条件有没有添加索引,如果没有添加索引,就加上索引。
2.如果有索引但是没有走,可以使用强制索引试试。
3.join后的关联条件,有索引但是没有走,可能有以下几种情况,2个字段的字段类型不一致,比如一个是int类型,一个是String类型,或者2个字段的字符集编码不一致等。
4.使用select时,不要select * ,列出所要查询的字段名,效率更高些。
5.限制条件中尽量少使用or,因为如果or两边的字段有一个没有添加索引,那么or两边的字段都不走索引。
6.如果排序字段没有用到索引,那么就尽量少排序或不排序。
7.使用复合索引,要遵循最左前缀法则。否则有可能不走索引。
8.避免在where子句中对字段进行null值判断,会使引擎放弃索引而进行全表扫描。
9.如果能使用inner join就不使用left join。
10.where条件中,尽量保证条件两边的参数类型一致。
11.where条件后的日期条件尽量使用拼接而少使用dateFormat函数,会使索引失效。