外键必须是mySQL中的索引?
我刚刚自己创建了我的第一个mySQL表(除了使用Joomla、Wordpress等),我是MS SQL开发人员多年,但通常我可以轻松地在MS SQL中创建外键,但我在这里遇到了困难或缺乏知识 这是我的桌子: 用户外键必须是mySQL中的索引?,mysql,sql,foreign-keys,indexing,Mysql,Sql,Foreign Keys,Indexing,我刚刚自己创建了我的第一个mySQL表(除了使用Joomla、Wordpress等),我是MS SQL开发人员多年,但通常我可以轻松地在MS SQL中创建外键,但我在这里遇到了困难或缺乏知识 这是我的桌子: 用户 用户id int主自动增量 用户名varchar(20) 密码varchar(20) 帖子 主自动增量中的post_id 标题varchar(100) 消息文本 用户id int 当我尝试向用户添加一个外键,该外键指的是posts->user\u id,我在mySQL面板的选项列表关系
posts->user\u id
,我在mySQL面板的选项列表关系视图窗口中看不到posts->user\u id
选项
我想知道我是否应该将
posts->user\u id
定义为Index
还是什么?如果是,原因是什么?简短回答:是的,MySQL强制您索引外键
InnoDB需要外键和引用键的索引,以便外键检查可以快速进行,而不需要表扫描
您可以在MySQL文档页面上阅读有关外键的更多信息:来自:
InnoDB需要外部数据库上的索引
键和引用的键,以便
外键检查可以是快速的,而不是快速的
需要表格扫描。在
引用表时,必须有一个
外键列所在的索引
列为列表中的第一列
同样的顺序
从:
InnoDB需要外部数据库上的索引
键和引用的键,以便
外键检查可以是快速的,而不是快速的
需要表格扫描。在
引用表时,必须有一个
外键列所在的索引
列为列表中的第一列
同样的顺序。这样就创建了一个索引
在引用表上自动
如果它不存在。(这是在
与一些旧版本相比,在
必须创建哪些索引
明确地说,还是创造了外国文化
关键约束将失败。)
索引_名称(如果给定)用作
如前所述
与SQL Server不同,SQL Server不要求为FKs编制索引。。。然而,我看到的建议表明,您几乎总是在为FK编制索引,即使它不是必需的。索引对外键定义没有影响——很可能是您使用的UI中的一个错误。你用什么软件来做这件事?我用phpMyAdmin来导航和编辑我的数据库..在我宣布它们为索引后,我开始在列表中看到它们。你刚刚给出了公平的答案。非常感谢。