一、索引概述
- 索引是应用程序设计和开发的一个重要方面。若索引太多,应用程序的性能可能会受到影响。而索引太少,对查询性能又会产生影响。要找到一个平衡点
二、InnoDB存储引擎索引概述
- InnoDB支持以下几种常见的索引:
- B+树索引
- 全文索引
- 哈希索引
- 前面已经提到过,InnoDB支持的哈希索引是自适应的,InnoDB存储引擎会根据表的使用情况自动为表生成哈希索引,不能人为干预是否在一张表中生成哈希索引
- B+树索引是传统意义上的索引,这是目前关系型数据库中查找最为常见和最有效的索引。B+树索引的构造类似于二叉树,根据键值快速找到数据
- 注意:B+树索引并不能找到一个给定键值的具体行。B+树索引能找到的只是被查找数据行所在的页。然后数据库通过把页读入内存,再在内存中进行查找,最后得到查找的数据
三、二分查找法
-
二分查找法(binary search)也称为折半查找法,用来查找一组有序的记录数组中的某一记录,其基本思想是:将记录按有序化(递增或递减)排列,在查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半
演示案例
- 如有5、10、19、21、31、37、42、48、50、52这10个数,现在要从这10个树中查找48这条记录,其查找过程如下:
- 从上图可以看到,用来3此就查找到了。如果是顺序查找,则需要8次。如果要查找5这条记录,顺序查找只需1次,二分查找法需要4次
- 对于上面10个数来说,平均查找次数为(1+2+3+4+5+6+7+8+9+10)/10=5.5次。二分查找法为(4+3+2+4+3+1+4+3+2+3)/10=2.9次。在最坏的情况下,顺序查找的次数为10,而二分查找的次数为4