首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL会自动为外键建立索引吗?

问MySQL会自动为外键建立索引吗?
EN

Stack Overflow用户
提问于 2012-06-28 21:02:50
回答 2查看 2.1K关注 0票数 1

谁能告诉我MySQL是否会自动索引它的外键?

我的MySQL正在使用MyIsam引擎。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-28 21:05:04

MyISAM根本不支持外键。从manual

对于InnoDB以外的存储引擎,MySQL服务器解析CREATE TABLE语句中的外键语法,但不使用或存储它。..。在稍后的阶段,也将为MyISAM表实现外键约束。

这是针对MySQL 5.6,下一个版本,所以它还没有实现。文本与旧版本完全相同。

这意味着根本不使用外键结构。您可以在CREATE TABLE命令中指定它,但是MySQL会默默地忽略它。不会对它建立索引,也不会存储它(所以SHOW CREATE TABLE命令不会显示您试图创建一个外键)。

如果需要外键支持,请考虑使用InnoDB存储引擎。InnoDB自动为外键创建索引。

票数 6
EN

Stack Overflow用户

发布于 2012-06-28 21:05:47

MyISAM引擎不支持外键,只支持InnoDB引擎:

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

InnoDB要求对外键和引用的键进行索引,以便可以快速检查外键,而不需要表扫描。在引用表中,必须有一个索引,其中外键列以相同的顺序作为第一列列出。如果引用表不存在,则会自动在引用表上创建这样的索引。如果您创建了另一个可用于强制执行外键约束的索引,则此索引可能会在以后以静默方式删除。如果给定了index_name,则按照前面描述的方式使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11245273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档