数据库唯一索引和普通索引的区别?

1、如果业务字段更新频繁的化,选择唯一索引还是普通索引?

      如果业务上能保证唯一性的化尽量使用普通索引而不是唯一索引。

2、针对查询而言普通索引的查询是在查询到符合条件的内容以后,继续进行下一项内容查询,如果下一项不符合则返回;但是唯一索引的查询是查询到满足条件的内容直接返回,整体上少一次查询比较,但是整体效率相差不大。

3、针对更新操作来说两者就有很大的差距了。

      要在更新操作上理解两者之间的差距首先理解一下change buffer。

      change buffer 用来记录更新操作,在没有把要更新前数据从硬盘读取到内存时,更新操作会先记录到change buffer中,在下一次进行select的时候再把更新前数据读取到内存,然后执行change  buffer中的命令进行数据合并,这个过程称为merge。

     如果是唯一索引的更新的化,首先要判断一下更新的数据在库里是否存在,这时候就势必会有一个读操作,有了读操作就会把硬盘数据加载到内存。这时候针对唯一索引的更新来说change buffer的就意义不大了。

     如果普通索引的更新的化,则会利用上change buffer 来减少更新时候的IO操作,提升效率。

     如果读大于写或者更新操作的时候,选择普通索引和唯一索引的区别不大。如果读小于写的化,使用普通索引的效率会高,因为会使用到change buffer。如果是写完立刻查询的化,普通索引的效率也不会太好,因为会涉及到频繁的merge操作,而且还需要额外的空间。
 

      

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值