一、索引介绍
1、索引定义
索引是存储引擎中,用于快速找到记录的一种数据结构。索引能够帮助存储引擎快速获取数据,形
象的说就是索引是数据的目录。
所谓的存储引擎,通俗的来说就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数
据等 技术的实现方法。
MySQL 存储引擎有 MyISAM、InnoDB、Memory,其中 InnoDB 是在 MySQL 5.5 之后成为默
认的存 储引擎。
在实际场景中,索引对于良好的性能起到非常关键的作用。或许在数据量小且负载较低时,索引的
不恰当使用可能对性能的影响可能不会太明显,但是当表中的数据量越来越大的时候,索引对性能
的影响就愈发重要,不恰当的索引会让性能急剧的下降。
2、索引的查找方式
在 MySQL 的 InnoDB 存储引擎中
若没有索引的情况下进行数据查询
a) 在一个数据页中查询
当表中的记录比较少时,所有记录可以存放到一个数据页中。当查询记录时,根据搜索条件的不同
查询分为两种情况:
以主键为搜索条件:在一个数据页内的记录会根据主键值的大小从小到大的顺序组成一个
单向链表。每个数据页都会为存储在它里面的记录生成一个页目录。通过主键查询某条记录可
以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组的记录,即可快速找
到指定的记录。
以其他列作为搜索条件:对于非主键列的查找,由于没有为非主键列建立对应的目录页,
即未创建索引。无法用二分法快速定位相应的槽,只能从 Inmum 记录开始依次遍历单向链
表中的每条记录,然后对比每条记录是否符合搜索条件,即全表扫描,因此效率非常低。
评论