mysql - 外键必须是 mySQL 中的索引?

标签 mysql sql foreign-keys indexing

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

这是我的 table :

用户

  1. user_id int 主自动增量
  2. 用户名 varchar(20)
  3. 密码 varchar(20)

帖子

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

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

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

最佳答案

简短的回答:是的,MySQL 强制您索引外键。

InnoDB requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan.

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

关于mysql - 外键必须是 mySQL 中的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6230588/

相关文章:

MySQL Left Join 需要一段时间

php - #1932 - 引擎中不存在表 'xxx.xxxx',更改 php mysql xampp 版本

php - 如何选择表中多个值的最大年份?

mysql - bool 字段作为唯一索引

mongodb - 了解 Mongoose 中的关系和外键

mysql - 无法建立 JDBC 连接 - 没有有效的解决方案 :/

MySQL查询慢查询主键上的表

sql - 在 group by 子句中连接数组

mysql - 我刚开始使用 MYSQL,但无法找到语法错​​误

python - 包括其他字段作为外键的选择,Django