mysql
数据库表的primary key
约束是否自动意味着在指定列上创建了索引?- 如果是这样,我们能否将其概括为任何数据库或者它只取决于数据库实现?
- 如果是这样,并且如果主键是复合的,则每个这样的列都会创建一个索引吗?
- 对于已经是
primary key
的列,通过key
约束创建(额外)索引是否有意义?
mysql
数据库表的primary key
约束是否自动意味着在指定列上创建了索引?
primary key
的列,通过key
约束创建(额外)索引是否有意义?在MySQL中,PRIMARY或UNIQUE KEY会在约束中定义的列上创建索引。如果有多个列,则创建一个组合索引。
如果是InnoDB表,则PRIMARY KEY也成为该表的聚簇索引。
添加与PRIMARY/UNIQUE相同定义的其他索引是没有意义的。
对于其他RDBMS,这些约束需要索引。即使允许创建不带适当索引的约束,但需要索引才能获得任何合理的性能。
primary key
也是索引。表的主键代表您在最重要的查询中使用的列或列集。它有一个相关联的索引,以实现快速查询性能。
https://dev.mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html
关于主键和唯一索引的区别,您可以查看: 主键和唯一键之间的区别