数据库中的索引,原理是什么?为什么查询使用索引就会快?

这个问题和线性查询、二分查询是有很大关系的 。索引后的数据可以使用二分法查询,未索引的数据查询需要线性查询 。下面详细说一下这两者之间的性能区别 。

数据库中的索引,原理是什么?为什么查询使用索引就会快?

文章插图
1、两者的查询原理①、线性查询
线性查询又称顺序查询,它的查询原理就是从第一条记录开始,逐个比较要查找的字段,直到字段内容和查找值相等,则查找成功,返回结果 。若比较结果与字段所有记录都不等,则查找失败 。下面举例说明:
需要在某个记录数为N的数组a[]中查找元素k,那么,线性查询就是从a[1]开始和k进行对比,对比相等则返回a[i],如果,不相等则继续下一个查询, i=i+1 。直到 i=N为止 。那线性查询的性能就一目了然:
  • 最好的情况就是对比1次就找到结果 。
  • 最差的情况就是需要对比N次才能找到结果 。
  • 平均计算,就是N/2次能找到结果 。
 
数据库中的索引,原理是什么?为什么查询使用索引就会快?

文章插图
②、二分查询
二分法查询也可以说是分段查询 。主要原理就是对已经排序的一组数据进行中间分段,中间分界点和查询值对比 。如果数值小于分界点,则要查找的数落在前半段;如果数字大于分界点,则要查找的数落在前半段;如果等于分界点,则要查找数就已经找到 。下面同样举例说明:
需要在某个记录数为N且已经排好序的数组a[]中查找元素K,那么,二分查询首先是确定数组的中点a[x],其实也就是a[N/2]这个值(N/2采用进一法取整) 。然后对比a[x]和K值,按照前面的方法循环缩小对比的区间,最终找到想要的值 。二分查询的性能如下:
  • 二分法查询N条记录需要log2(N)次对比就能找到结果 。
  • 前提是:数组必须要排好序
 
数据库中的索引,原理是什么?为什么查询使用索引就会快?

文章插图


    推荐阅读