首页 文章

外键必须是mySQL中的索引?

提问于
浏览
10

我刚刚创建了我自己的第一个mySQL表(除了使用Joomla,Wordpress等),我是MS SQL开发人员多年,但通常我可以在MS SQL中轻松创建外键但我遇到了困难或者这里缺乏知识 .

这是我的表格:

users

  • user_id int primary auto_increment

  • 用户名varchar(20)

  • 密码varchar(20)

posts

主auto_increment中

  • post_id

  • title varchar(100)

  • 消息文本

  • user_id int

当我尝试向引用 posts->user_id 的用户添加外键时,我在mySQL面板的选项列表Relation_view窗口中看不到 posts->user_id 选项 .

我想知道我是否应该将 posts->user_id 定义为 Index 或其他什么?如果是这样,为什么?

3 回答

  • 17

    简短回答:是的,MySQL强制你索引外键 .

    InnoDB需要外键和引用键的索引,以便外键检查速度快,不需要表扫描 .

    您可以在MySQL文档页面上阅读有关外键的更多信息:http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

  • 2

    来自MySQL Reference Manual

    InnoDB需要外键和引用键的索引,以便外键检查速度快,不需要表扫描 . 在引用表中,必须有一个索引,其中外键列以相同的顺序列为第一列 . 如果索引不存在,则会自动在引用表上创建此索引 . (这与某些旧版本形成对比,其中必须明确创建索引或创建外键约束失败 . )如果给定index_name,则如前所述使用 .

    与SQL Server不同,SQL Server不需要对FK进行索引...但是我看到的建议表明,即使不需要,您也几乎总是将FK编入索引 .

  • 4

    the documentation

    InnoDB需要外键和引用键的索引,以便外键检查速度快,不需要表扫描 . 在引用表中,必须有一个索引,其中外键列以相同的顺序列为第一列 .

相关问题