首先哪些地方加索引(按照sql执行顺序写)
1、from表扫描连接处索引
2、where后条件去走索引
3、group by加索引
4、select查询不用加
5、order by排序加索引
(对于第四点,覆盖索引:查询的字段都被索引覆盖,可直接在索引中查询而不用回表,不过全加索引不太现实)
这是没有加索引的性别查询:
这是加了索引的性别查询:
然后我们看下sex=1的条数:
第一个,索引有没有必要加看你的查询的索引选择性,当条数1000条,999条数据是不同的,索引选择性为999/1000,越接近1越有必要加索引。
第二点,索引选择性低的字段(性别和逻辑删除等字段有没有必要加索引)当你一千万数据中性别为0的只有三条,那么此时通过索引查询性别为0会快速找出这三条,如果经常要用到查询性别为0,少数用到1可以加,否则不要选择索引;例如逻辑删除字段,大都是情况都是查删除状态为0的数据,而状态为0的占绝大数,所以没必要加索引。