主键也是索引吗?

  1. mysql数据库表列的primary key约束是否自动意味着在给定列上创建了索引?
    1. 如果是,我们可以将其推广到任何数据库还是仅取决于数据库实现?
    2. 如果是,并且如果主键是复合的,是否为每个此类列创建索引?
  2. 创建(附加?)有意义吗?通过对已是primary key的列的key约束进行索引?

解决方案

  1. 在MySQL中,主键或唯一键在约束中定义的列上创建索引。如果有多列,则创建复合索引。

    如果它是InnoDB表,则主键也成为该表的聚集索引。

  2. 添加与主/唯一索引具有相同定义的其他索引没有意义。

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

相关文章