由于MySQL自动将主键加入到二级索引(自行建立的index)里,所以当select的是主键或二级索引就会很快,select *就会慢。因为有些列是没在索引里的
假设CA有1kw人咋整,那我这个索引只起了前一半作用。
所以用复合索引,那么复合索引的列索引顺序也很重要,首先肯定要把最重要的像分类的排第一,其次是索引的区分度高的(性别只能分出两类,索引效果N/2,不如居住的state,索引效果N/48)
最重要的是你的查询,如下两图,看看怎么能更好的区分,后一种查询的row更少
假设复合索引是对(state, points)复合的,那么用其排序也是有说道的,下面三个都是能利用到索引的排序,因为索引先将a排序然后按b排序存储的,如图所示(当然如果WHERE state = 'CA’然后对points排序也肯定是利用到了索引的)
- state
- state, points
- state DESC, points DESC