主键也是索引吗?
- 对
mysql
数据库表列的primary key
约束是否自动意味着在给定列上创建了索引?- 如果是,我们可以将其推广到任何数据库还是仅取决于数据库实现?
- 如果是,并且如果主键是复合的,是否为每个此类列创建索引?
- 创建(附加?)有意义吗?通过对已是
primary key
的列的key
约束进行索引?
解决方案
在MySQL中,主键或唯一键在约束中定义的列上创建索引。如果有多列,则创建复合索引。
如果它是InnoDB表,则主键也成为该表的聚集索引。
添加与主/唯一索引具有相同定义的其他索引没有意义。
对于其他RDBMS,这些约束将需要索引。即使允许您在没有适当索引的情况下创建约束,也需要它才能获得任何合理的性能。
相关文章