1.当使用索引列进行查询的时候尽量不要使用表达式,把计算放到业务层而不是数据库层
2.尽量使用主键查询,而不是其他索引,因为主键查询不会触发回表查询
3.union all,in,or都能够使用索引时,但是推荐使用in
4.范围列可以用到索引,范围条件是:<、<=、>、>=、between,范围列可以用到索引,但是范围列后面的列无法用到索引,索引最多用于一个范围列
5.强制类型转换会全表扫描
6.更新十分频繁,数据区分度不高的字段上不宜建立索引。更新会变更B+树,更新频繁的字段建议索引会大大降低数据库性能。类似于性别这类区分不大的属性,建立索引是没有意义的,不能有效的过滤数据。一般区分度在80%以上的时候就可以建立索引,区分度可以使用 count(distinct(列名))/count(*) 来计算。
7.能使用limit的时候尽量使用limit
8.单表索引建议控制在5个以内
9.创建索引的时候应该避免以下错误概念:索引越多越好,过早优化,在不了解系统的情况下进行优化。