主键也是索引吗?

Is primary key also index?

  1. mysql 数据库 table 列的 primary key 约束是否自动意味着在给定列上创建了索引?
    1. 如果是,我们能否将其推广到任何数据库,或者它仅取决于数据库实现?
    2. 如果是,而且如果主键是复合的,是否为每个 each 这样的列创建了索引?
  2. 在已经是 primary key 的列上通过 key 约束创建(附加?)索引是否有意义?
  1. 是的,primary key 也是 MySQL 中的索引。

The primary key for a table represents the column or set of columns that you use in your most vital queries. It has an associated index, for fast query performance.

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

主键和唯一索引的区别可以看:difference between primary key and unique key

  1. 不,您将有两个索引,它会占用更多磁盘 space。
  1. 在 MySQL 中,PRIMARY 或 UNIQUE KEY 在约束中定义的列上创建索引。如果有多个列,则创建一个复合索引。

    如果它是 InnoDB table,主键也会成为 table 的聚集索引。

  2. 添加与 PRIMARY/UNIQUE 具有相同定义的额外索引没有意义。

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