MySql范围查找时索引不生效问题的原因分析
改写sql语句:此时,令人惊讶的是,索引生效了。2 问题分析此时,我们做一个大胆的猜测:第一次进行sql分析时,因为第一次order by 后,得到的还是全表数据,如果根据复合索引中携带的主键查找每一个gender进行拼接,自然很费资源和时间,mysql不会做如此蠢的事。不如直接进行全表扫描,把扫描到的每条数据和order by得到的临时数据进行拼接,从而得到需要的数据。为了验证上述想法的正确性,我们对三次sql进行分析。此时还没有达到mysql使用索引进行二次查找的量级。3 总结mysql 是否根据首次索引条件查询出的主键进行二次查找,也是要看查询出来的数据量级,如果数据量接近全表数据量的话,就会进行全表扫描,否则根据第一次查询出来的主键进行二次查询。
下载地址
用户评论