外键必须是mySQL中的索引?

Tar*_*rik 10 mysql sql indexing foreign-keys

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

这是我的表格:

用户

  1. user_id int primary auto_increment
  2. 用户名varchar(20)
  3. 密码varchar(20)

帖子

  1. 主要auto_increment中的post_id
  2. title varchar(100)
  3. 消息文本
  4. user_id int

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

我想知道我是否应该定义posts->user_idIndex什么?如果是这样,为什么?

Cro*_*zin 17

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

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

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