MySQL是十分常用的关系型数据库,工作中常常需要对SQL进行优化,提高查询效率。建立索引是常用的方法。那么什么是索引,以及在使用索引时需要注意哪些问题?
什么是索引
建立索引是提高查询效率最常用的方法,我们先了解一下什么是索引。
官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构
个人总结:索引是一种排好序的快速查找数据结构,
索引两大作用:排序 和 快速查找
索引的优缺点:
优:提高查询效率,减少磁盘IO
缺:占用空间,降低修改操作的效率。更新表不仅要更新数据,还要更新索引信息。
索引结构:BTree树,R-Tree,hash,full-text等
以B+树索引为例,附图
一颗B+树,浅蓝色的块我们称之为磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄颜色所示),如磁盘块1包含数据项17和35,包含指针P1,P2,P3。
P1表示小于17的磁盘块,P2表示17-35之间的磁盘块,P3表示大于35的磁盘块。
真实的数据存在于叶子节点,即3,5,9,10,13,15,28,29,36,68,75,79,90,99。
非叶子结点不储存真实数据,只储存指引搜索方向的数据项,如17,35并不真实存在于数据