我创建了表查询,如下所示:
create table table_name(
id int auto_increment,
...
KEY fk_some_name (some_column_name)
)
这个"钥匙"有什么作用?我想写它的人不知道他在做什么。他把它命名为fk_some_name。我想他想创建一个外键。我已经搜索了一段时间,但没有找到单独使用的Key关键字的用法。
在您显示的情况下,它只是一个恰好名为 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)
在其他一些情况下,您不能互换使用它们:
仅使用 KEY,而不使用 INDEX:
CREATE TABLE ... ( ... FOREIGN KEY name (col) REFERENCES ... )
仅使用 INDEX,而不使用 KEY:
CREATE INDEX name ON tablename (column_name)
如有疑问,请阅读参考文档。
根据create table
的MySQL文档,KEY
是INDEX
的同义词。 因此,这会在一列上创建一个名为"fk_some_name"的索引。