数据库索引学习

参考:https://www.cnblogs.com/aspwebchh/p/6652855.html

对于mysql而言,常用的是innodb和myisam引擎,只有innodb有聚集索引

1、聚集索引

  一般是主键,可以自己指定。一个表只能有聚集索引,它的特点是索引的排列顺序和表记录的排列顺序相同。这区别于非聚集索引。

  当表没有建立聚集索引时,表数据的无序的排列在磁盘上。创建聚集索引后,表数据向二叉树一样分布在磁盘上。

  

  除了最底层数据,其他节点都是聚集索引,当sql通过聚集索引查询时,他们会先通过上面的节点快速定位到数据具体的位置,再查询信息。

2、非聚集索引

  就是我们经常自己创建的索引了,非聚集索引可以创建多个。当我们再某个字段创建索引时,该字段会被复制一份用来生成索引。当sql通过该索引查询时,会先在索引查询到数据的聚集索引,在通过聚集索引查询到具体的数据。除了覆盖索引外,其他的索引查询都会用到聚集索引。

 

截图一张咕泡的公开课的图(侵删)

 

 

3、优缺点

  优点很明显了,查询快。但是缺点也显而易见:

  1、每次给字段建一个新索引, 字段中的数据就会被复制一份出来, 用于生成索引。 因此, 给表添加索引,会增加表的体积, 占用磁盘存储空间。

  2、每次增删改数据都会改变各节点中的索引数据内容,破坏树结构, 因此,在每次数据改变时, 数据库必须去重新梳理树(索引)的结构以确保它的正确,这会带来不小的性能开销。

 

4.设计索引

  (单字段索引,多字段索引相同)最左原则,离散型高原则,宽带小原则

 

5.覆盖索引

  如果需要查询的字段就是索引字段,则查询的适合,可以直接从索引出获取数据,不需要查询具体的数据,减少io

转载于:https://www.cnblogs.com/jaxlove-it/p/9272733.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值