Mysql中的默认密钥约束是什么,或者;“关键”;你一个人做什么?
我创建了具有如下内容的表查询:Mysql中的默认密钥约束是什么,或者;“关键”;你一个人做什么?,mysql,sql,Mysql,Sql,我创建了具有如下内容的表查询: create table table_name( id int auto_increment, ... KEY fk_some_name (some_column_name) ) 这把“钥匙”是干什么用的?我想写这封信的人不知道他在干什么。他给它取了个名字。我想他想创建一个外键。我搜索了一段时间,但没有找到单独使用的Key关键字的用法。根据,Key是索引的同义词。因此,这会在一列上创建一个名为“fk_some_name”的索引。在本例中,它只
create table table_name(
id int auto_increment,
...
KEY fk_some_name (some_column_name)
)
这把“钥匙”是干什么用的?我想写这封信的人不知道他在干什么。他给它取了个名字。我想他想创建一个外键。我搜索了一段时间,但没有找到单独使用的Key关键字的用法。根据,
Key
是索引的同义词。因此,这会在一列上创建一个名为“fk_some_name”的索引。在本例中,它只是一个名为fk_some_name
的索引
许多站点不喜欢使用真正的外键约束,但它们可能仍然需要列上的索引来帮助优化针对该列的连接。这可能是一种命名约定,用于连接的索引使用fk
前缀命名
同样在MySQL中,如果您为已经有索引的列定义外键约束,它将使用该索引,而不是创建冗余的新索引
在某些上下文中,KEY
和INDEX
在MySQL中是同义词
您可以这样做:
CREATE TABLE ... ( ... {INDEX|KEY} name (some_column_name) )
ALTER TABLE ... ADD {INDEX|KEY} name (some_column_name)
您可以这样做:
CREATE TABLE ... ( ... {INDEX|KEY} name (some_column_name) )
ALTER TABLE ... ADD {INDEX|KEY} name (some_column_name)
在某些其他情况下,您不能互换使用它们:
仅使用键,不使用索引:
CREATE TABLE ... ( ... FOREIGN KEY name (col) REFERENCES ... )
仅使用索引,不使用键:
CREATE INDEX name ON tablename (column_name)
如果有疑问,请阅读参考文档。我明白了,我想它是一个非聚集非唯一索引。对。顺便说一句,MySQL没有让您选择聚集索引的选项。聚集索引始终是主键,如果没有主键,则它是第一个非空的唯一键。