MySQL索引的主键索引
上一次,我们介绍了聚合索引和非聚集索引之间的区别。这一次我们继续介绍主键索引和辅助索引之间的区别。
1。主要的关键指标
主键索引,称为主键,是主键,由一个或多个列组成,用于唯一地标识数据表中的记录。表可以没有主键,但最多只能有一个主键,主键值不包含null。
在MySQL中,我们通常遵循的InnoDB数据表的主键设计的几个原则:
1,不使用业务的自添加属性列作为主关键字。
2,主关键字字段值总是不更新,只添加或删除两种操作;
3,不要选择将动态更新的类型,如当前的时间戳等。
这样做的好处有以下几点:
1,当新的数据被添加,因为主键值的增加从而降低InnoDB页分裂的概率是。我们可以参考以前的共享{ MySQL FAQ }系列--为什么InnoDB表推荐使用自添加列作为主键。
2,当业务数据的物理存储位置的改变,改变的概率降低不修改主键值,并在InnoDB页面碎片的概率也降低。
MyISAM表是因为它是一堆组织表,和主要关键型设计不能如此特别。
2。辅助指标
辅助索引是我们经常提到的索引,原索引是辅助索引,辅助索引也可以分为唯一索引,而不是唯一索引。
事实上,惟一的索引应该称为唯一约束,其功能是避免列或多列值的重复,它是一个约束索引。
3,主要关键指标与辅助指标的差异
在MyISAM引擎,唯一的指标是不是主要关键指标本质上是不同的,但核心价值为零的存在。换句话说,在MyISAM引擎,对空值的唯一索引是不允许的,它本质上是一个主键索引。
在InnoDB引擎,主要关键指标和辅助指标差别很大。主要的关键指标是作为一个聚集索引,而索引和普通辅助索引的存储是没有必要的,除了唯一性约束。
从查询的性能,在MyISAM表,查询性能的主键索引和唯一索引不允许空是等价的。在InnoDB表,通过唯一索引的查询,它需要从辅助索引,主键索引,另一个转换的过程。基于普通指数InnoDB表的查找成本较高,因为检索结果后,需要搜索至少再次确认是否有更多符合条件的结果。主键索引和唯一索引不需要做。
经过测试,100万行数据的MyISAM是随机检索(整数型),主键和唯一索引的效率基本上是相同的,与普通索引检索效率比30%慢。对于InnoDB表,独特的指数是9%左右的效率比主键索引,和普通指数是50%比主键索引慢。
关于MySQL你想知道什么,你可以直接留言,我会选择一些热点话题来分享。同时,我希望你能提出更多,更多的阅读对于老叶继续分享有很大的帮助。谢谢大家: