美文网首页个人学习
数据库索引(一)

数据库索引(一)

作者: Sandy_678f | 来源:发表于2019-12-12 15:18 被阅读0次

数据库索引意在提升检索效率。
通过创建唯一索引可以保证数据库表中每一行数据的唯一性。排序后可以将随机的I/O转换成顺序I/O。

索引是如何提高检索速度的?
将无序的数据存储转为相对有序的数据。

索引为什么不是越多越好?

  1. 对表中的数据进行insert/update/delete时,索引需要动态维护,占用时间。
  2. 索引建立后需要占用存储空间,如果是聚簇索引,占用的存储空间更大。

MySQL数据库主要使用的两种数据结构

  1. 哈希索引


    image.png

    (图片来源于网络,侵删)
    哈希索引检索速度很快,但是也存在一定的局限性:
    1)哈希索引没有办法利用索引完成排序
    2)有重复键值的情况下,会发生哈希碰撞,索引效率较低
    3)不支持范围查询
    4)不支持最左匹配原则

  2. B+Tree索引


    image.png

    (图片来源于网络,侵删)
    每一页存在一个record_type:
    0:普通的用户记录
    1:目录项记录
    2:最小记录
    3:最大记录
    目录项记录只有主键值和页的编号两个列,而普通的用户记录的列是用户自己定义的(Innodb为列,MyISAM的叶子节点存储记录的指针),可能包含很多列,另外还有InnoDB自己添加的隐藏列。

Innodb和MySIAM实现B+Tree的方式:聚簇索引 & 非聚簇索引


image.png

(图片来源于网络,侵删)

聚簇索引:
叶子节点存储了完整的用户记录
在Innodb中,会自动创建聚簇索引,聚簇索引就是数据的存储方式。一张表有且仅有一个聚簇索引。
1)如果表定义了PK,则PK就是聚簇索引
2)如果表没有定义PK,则第一个not NULL unique列就是聚簇索引
3)否则,Innodb会创建一个隐藏的row-id作为聚簇索引

普通索引(二级索引,辅助索引,非聚簇索引)
对于Innodb来说二级索引的叶子节点存放的是索引列的值与主键
MyISAM因为存放的全是主键和行号,意味着MyISAM中建立的索引全部都是二级索引,那么MyISAM均需要回表查询。

索引覆盖
explain查询计划优化,即explain的输出结果Extra字段为Using index时,能够触发索引覆盖。
只需要在一棵索引树上就能获取SQL所需的所有列数据,无需回表,速度更快。
常见的方法是:将被查询的字段,建立到联合索引里去。
哪些情况可以利用索引覆盖来优化SQL:
1)全表count查询优化
2)列查询回表优化
3)分页查询

复合索引的范围查询与最左原则:

  1. SQL语句中where子句中范围查询之后的列无法使用联合索引
  2. 在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配

相关文章

  • 数据库索引记录

    本文用来记录数据库索引相关内容; 1】数据库索引分为单列索引,组合索引,全文索引,空间索引 2】单列索引:只有一个...

  • 索引,序列,视图

    1、数据库索引索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。在数据库中索引可以减少数据库程序查询结果...

  • 数据库索引定义和类型

    数据库索引类型及实现方式 1、索引定义 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引是对数据库表...

  • Sql索引优化—转载

    数据库索引使用方式 使用索引是提高数据库查询效率的主要方式,下面从索引结构,索引类型,索引操作,命中索引几个方面来...

  • 数据库 - 索引

    索引 索引 索引的建立对于数据库的高效运行是很重要的。索引可以大大提高数据库的检索速度。 索引分单列索引,组合索引...

  • MySQL 索引

    MySQL 索引 数据库索引的原理:数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表...

  • [Mysql]Mysql索引实现原理及相关优化策略

    数据库索引 数据库索引是什么? A database index is a data structure that...

  • 数据库索引

    数据库索引 数据库的索引原理都是一样,这里我举的例子的索引指的是mysql的@[toc] 概述: 大家都知道,索引...

  • 数据库_索引

    二、索引 1.什么是索引? 何为索引:数据库索引,是数据库管理系统中一个排序的数据结构,索引的实现通常使用B树及其...

  • 数据库索引结构总结

    [TOC] 参考 数据库索引数据结构总结 本文摘抄自数据库索引数据结构总结 1. 摘要 数据库索引是数据库中最重要...

网友评论

    本文标题:数据库索引(一)

    本文链接:https://www.haomeiwen.com/subject/cbjogctx.html