1.使用联合索引,而不是单个索引,当在where条件里a和b字段更多时候是联合出现时,就有必要这样做,如idx_a_b(a,b),而不是idx_a(a),idx_b(b)。sql中的order by、group by、min、max的排序相关以及distinct也会因为有索引的存在而有性能上的提升(所以经常被order by、group by、min、max的字段当然也要考虑加索引)。
2.联合索引中,索引字段的顺序根据字段的区分度排,区分度大的放在前面,如idx_smp(name,gender)
3.合理创建联合索引,例如,用idx_a_b_c(a,b,c)来覆盖idx_a_b(a,b),idx_(b),但是
不能覆盖idx_c(c)。
4.where字段时,尽量不要在字段上直接加函数,这样是不会走索引的,会减慢执行速度。
ps:可以适当的做数据冗余,来尽量避免做表连接查询。