我刚刚创建了我自己的第一个mySQL表(除了使用Joomla,Wordpress等)并且我是MS SQL开发人员多年,但通常我可以在MS SQL中轻松创建外键但我遇到了这里有困难或缺乏知识。
这是我的表格:
用户
帖子
当我尝试向引用posts->user_id
的用户添加外键时,我在mySQL面板的选项列表Relation_view窗口中看不到posts->user_id
选项。
我想知道我是否应该将posts->user_id
定义为Index
或其他什么?如果是这样,为什么?
答案 0 :(得分:17)
简短回答:是的,MySQL会强制您索引外键。
InnoDB需要外键和引用键的索引,以便外键检查速度快,不需要进行表扫描。
您可以在MySQL文档页面上阅读有关外键的更多信息:http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
答案 1 :(得分:4)
InnoDB需要外国索引 键和引用键,以便 外键检查可以快速而不是 需要进行表扫描。在里面 引用表,必须有一个 索引所在的外键列 被列为第一列 同样的顺序。创建了这样的索引 在引用表上自动 如果它不存在。 (这是在 与一些旧版本形成鲜明对比 必须创建哪些索引 明确地或创造外国的 关键约束会失败。) index_name,如果给定,则用作 如前所述。
与SQL Server不同,SQL Server不需要对FK进行索引......但是我看到的建议表明,即使不是必需的,您也几乎总是将FK编入索引。
答案 2 :(得分:2)
InnoDB需要外国索引 键和引用键,以便 外键检查可以快速而不是 需要进行表扫描。在里面 引用表,必须有一个 索引所在的外键列 被列为第一列 同样的顺序。