mysql的innodb引擎,不管怎样每张表都会有聚集索引,那这个聚集索引能否删除呢?

关于聚集索引,innodb会按照如下规则进行处理:
  1,如果一个主键被定义了,那么这个主键就是作为聚集索引
  2,如果没有主键被定义,那么该表的第一个唯一非空索引被作为聚集索引
  3,如果没有主键也没有合适的唯一索引,那么innodb内部会生成一个隐藏的主键作为聚集索引,这个隐藏的主键是一个6个字节的列,改列的值会随着数据的插入自增。

但是问题来了,聚集索引的存在,会导致每次update或者insert数据的时候,还要额外更新一下索引,如果表的数据量很大,势必会影响更新和插入数据时的性能。innodb是面对这种情况是如何处理的?或者说我们该如何处理这种情况?可以把聚集索引删除吗?但我看innodb的特性决定了聚集索引好像没法删除

阅读 3.2k
1 个回答

建议这种问题自己去做做测试,找不同的引擎使用不同的索引验证一下,聚集索引带来的更新索引性能牺牲根本可以忽略,甚至合适的聚集索引反而会提高更新插入性能,mysql或者其他类型的DB可以给你很多种选择。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题