2021-4-6 SQL 索引(index)

索引

什么是索引

索引是帮助MYSQL高效获取数据的数据结构排好序快速查找数据结构)

一般来说索引本身也很大,不可能储存在内存中,以文件的形式存储在磁盘上。

索引优缺点

  • 优点:

第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

  • 缺点:

第一,创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

什么时候使用索引?什么时候不能使用索引

  • 需要的情况

经常搜索的列
作为主键的列
经常需要连接where子句的列
经常需要排序的列
经常需要范围查找的列

  • 不需要的情况

查找少的|更新频繁的|取值范围比较少的列


索引的分类

逻辑分类

主键索引:一般是表在创建主键的时候,会创建主键索引,一个表中只有一个主键索引,主键索引的值不可以重复,不可以为空。
唯一索引:一个表中可以有多个唯一索引,但是表中的值不可以重复,但是可以为空。
普通索引:一个表中可以有多个普通索引,可以为空,值可以重复。
全文索引:使用的比较少,加快模糊查询。

物理分类

聚集索引:聚集索引是指数据在物理内存的储存顺序,与数据的逻辑排列顺序是相同的,一般聚集索引就是主键索引,如果不存在主键索引,那么就是一个非空的唯一索引。
非聚集索引:非聚集索引就是数据在物理内存中的储存顺序,与数据的逻辑顺序是不同的。非聚集索引查找数据一般需要扫描两遍索引树,第一遍是扫面非聚集索引的索引树,找到数据的主键ID,然后在主键索引中找到对应的数据。

索引底层实现

数据库的索引是使用B+树实现的 引申:为什么不用B树或者红黑树 & B树和B+树的区别

posted @ 2021-04-06 16:26  shenlei_blog  阅读(186)  评论(0)    收藏  举报