主键也是索引吗?

时间:2015-11-11 09:54:20

标签: mysql primary-key composite-primary-key

  1. primary key数据库表列的mysql约束是否自动意味着在给定列上创建了索引?
    1. 如果确实如此,我们可以将它概括为任何数据库,还是只依赖于数据库实现?
    2. 如果确实如此,如果主键是复合键,是否每个 这样的列都会创建一个索引?
  2. 通过已经key的列上的primary key约束来创建(附加?)索引是否有意义?

2 个答案:

答案 0 :(得分:1)

  1. 是的,primary key也是MySQL的索引。
  2.   

    表的主键表示您在最重要的查询中使用的列或列集。它具有关联的索引,以实现快速查询性能。

    https://dev.mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html

    对于主键和唯一索引之间的差异,您可以看到:difference between primary key and unique key

    1. 不,你将有两个索引,它将占用更多的磁盘空间。

答案 1 :(得分:1)

  1. 在MySQL中,PRIMARY或UNIQUE KEY在约束中定义的列上创建索引。如果有多个列,则创建复合索引。

    如果是InnoDB表,PRIMARY KEY也会成为表的聚簇索引。

  2. 使用与PRIMARY / UNIQUE相同的定义添加其他索引是没有意义的。

  3. 对于其他RDBMS,这些约束将需要索引。即使您被允许在没有适当索引的情况下创建约束,也需要获得任何合理的性能。