为什么索引可以提高效率?
对于索引的应用比较常见,索引的底层数据结构也有一定的了解,但是一直在思考为什么索引会提高效率,后来,参考网上的文章,终于得到解释。
============================================================
本文只针对mysql进行相关方面的说明。
首先我要问,“数据索引是有序无序的?”。答:“当然是有序的了。”
再问,一个SQL语句可以有几个索引?你先别往下看结果,你这想下,可以使用几个索引呢?正确的是:“1个”。有人肯定会疑惑。对,当初我接受这个概念也是挺纳闷的,后来在实际中得到了解答。那么,你需自己找答案了。
在有序的情况下,通过索引查询一个数据是无需遍历索引记录的;
极端情况下,数据索引的查询效率为二分法查询效率,趋近于 log2(N);
在进行索引分析和SQL优化时,可以将数据索引字段想象为单一有序序列,并以此作为分析的基础。
如以下的SQL,如何进行优化呢?
1
|
|