MySQL中的索引
索引是一个比较复杂的模块,要学好需要多花点时间。索引是MySQL进行查询优化的一个很重要的手段,如果用得好,可以成为数据访问的有力而且灵活的工具,快速提高查询效率,所以多花点时间好好学习和思考这一块内容也是很值得的。下面,对MySQL中索引的内容做了一下归纳总结,有点零散。 01、索引基础 1、索引是存储引擎用于快速找到记录的一种数据结构。 2、索引是对查询性能优化最有效的手段。 3、B-树索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是索引的根节点开始进行搜索。根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找。通过比较节点页的值和要查找的值可以找到合适的指针进入下一层子节点,这些指针实际上定义了子节点页中值的上限和下限。最终存储引擎要么是找到对应的值,要么该记录不存在。 4、B-树对索引列是顺序组织存储的,所以很适合查找范围数据。 5、使用B-树索引适用于全键值、键值范围或键前缀查找。具体地: (1)全值匹配 (2)匹配最左前缀 (3)匹配列前缀 (4)匹配范围值 (5)精确匹配某一列并范围匹配另一列 (6)只访问索引的查询 6、如果不是按照索引的最左列开始查找,则无法使用索引。 7、不能跳过索引中的列。 8、如果查询中有某个列的范围查找,则其右边所有列都无法使用索引优化查找。 9、哈希索引:对于每一行数据