2021-4-6 SQL 索引(index)
索引
什么是索引
索引是帮助MYSQL高效获取数据的数据结构 (排好序的快速查找数据结构)
一般来说索引本身也很大,不可能储存在内存中,以文件的形式存储在磁盘上。
索引优缺点
- 优点:
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
- 缺点:
第一,创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
什么时候使用索引?什么时候不能使用索引
- 需要的情况
经常搜索的列
作为主键的列
经常需要连接where子句的列
经常需要排序的列
经常需要范围查找的列
- 不需要的情况
查找少的|更新频繁的|取值范围比较少的列
索引的分类
逻辑分类
主键索引:一般是表在创建主键的时候,会创建主键索引,一个表中只有一个主键索引,主键索引的值不可以重复,不可以为空。
唯一索引:一个表中可以有多个唯一索引,但是表中的值不可以重复,但是可以为空。
普通索引:一个表中可以有多个普通索引,可以为空,值可以重复。
全文索引:使用的比较少,加快模糊查询。
物理分类
聚集索引:聚集索引是指数据在物理内存的储存顺序,与数据的逻辑排列顺序是相同的,一般聚集索引就是主键索引,如果不存在主键索引,那么就是一个非空的唯一索引。
非聚集索引:非聚集索引就是数据在物理内存中的储存顺序,与数据的逻辑顺序是不同的。非聚集索引查找数据一般需要扫描两遍索引树,第一遍是扫面非聚集索引的索引树,找到数据的主键ID,然后在主键索引中找到对应的数据。
索引底层实现
数据库的索引是使用B+树实现的 引申:为什么不用B树或者红黑树 & B树和B+树的区别
浙公网安备 33010602011771号