唯⼀索引与普通索引的区别?

查询上的区别
对唯⼀索引,由于索引定义了唯⼀性,查找到第⼀个满⾜条件的记录后,就会停⽌检索
对普通索引,查找到满⾜条件的第⼀个记录’ab‘后,需查找下个记录,直到碰到第⼀个不满⾜k=’ab‘条件的记录
结论:mysql采⽤page⻚(⼀⻚16K)为数据单位从磁盘load出数据,除⾮刚好值为’ab‘的记录在⼀⻚的最后⼀条数据,否则执⾏性能区别微乎其微

change buffer的定义
⼀种特殊的数据结构,该结构在 次要索引 中记录对 页 的更改作用:提⾼更改索引操作性能,涉及更改缓冲区的⼀组功能统称为“更改缓冲区” ,由“插⼊缓冲区”,“删除缓冲区”和 “清除缓冲区”组成

同步策略
当相关索引页被带⼊缓冲池⽽相关联的更改仍在更改缓冲区中时,该⻚的更改将使⽤更改缓冲区中的数据应⽤于缓冲池( 合并 )中。在系统大部分处于空闲状态或缓慢关机期间运⾏的“清除”操作会定期将新的索引页写⼊磁

修改上的区别
对于唯⼀索引,所有更新操作要先判断该操作是否违反唯⼀性约束,唯⼀索引不会⽤change buffer若所修改的数据在内存中找到索引对应该存储的位置,判断、到没有冲突,插⼊值,语句执⾏结束找到索引对应该存储的位置,插⼊值,语句执⾏结束。若所修改的数据不在内存中需要将数据⻚读⼊内存,判断到没有冲突,插⼊值,语句执⾏结束将更新记录在change buffer,语句执⾏结束

结论
唯⼀索引和普通索引在查询性能上没差别,主要考虑对更新性能影响
唯⼀索引可以从数据库上强制去重,但⽤不了changebuffer的优化机制,从性能⻆度,推荐优先考虑⾮唯⼀索引

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工藤学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值