【问题标题】:Why doesn't MySQL's MyISAM engine support Foreign keys?为什么 MySQL 的 MyISAM 引擎不支持外键?
【发布时间】:2012-10-09 21:22:42
【问题描述】:

我正在为我的学习编写一个网络应用程序,其中包括全文搜索和外键。

我在某处读过,MyISAM 引擎适合全文搜索,InnoDB 适合外键。

在这种情况下,我应该使用什么引擎以获得最佳性能?

  • 为什么 MyISAM 不支持外键关系,而 InnoDB 支持?
  • 为什么 MyISAM 支持全文搜索而 InnoDB 不支持?

【问题讨论】:

  • 功能默认不存在。需要有人来实现它们。
  • @ajreal 我读过我的大学书。那本书解释了引擎的优缺点。
  • 现在 InnoDB 确实支持全文搜索了。

标签: mysql database innodb myisam


【解决方案1】:
  1. 请告诉我,在这种情况下,我必须使用什么引擎来提高性能?

    每个存储引擎的性能取决于您执行的查询。但是请注意,同一数据库中的不同表可以使用不同的存储引擎。

  2. 为什么 MyISAM 引擎不支持外键关系而 InnoDB 支持?

    Foreign Key Differences 中所述:

    在稍后阶段,还将为MyISAM 表实现外键约束。

    因此,外键约束还没有在MyISAM 中实现。

编辑:由于该评论已从文档中删除,似乎不再计划在 MyISAM 引擎中实现外键约束。

  1. 为什么 MyISAM 引擎支持全文搜索而 InnoDB 不支持?

    What Is New in MySQL 5.6 中所述:

    您可以在InnoDB 表上创建FULLTEXT 索引,并使用MATCH() ... AGAINST 语法查询它们。

    因此,自 MySQL 5.6 起,InnoDB 已实现全文搜索。

【讨论】:

  • 我没有看到“在稍后阶段,MyISAM 表也将实施外键约束”这句话。在 MySQL 文档中。也许该功能尚未制定路线图?
  • @shabbychef:你是对的——看起来评论在Sep 10, 2013Oct 11, 2013之间的某个时间被删除了;我在当前文档的其他地方看不到任何参考,表明 FK 约束在未来仍然适用于 MyISAM,我也看不到任何具体的文档/讨论/记录。所以是的,我猜它不再计划了。
【解决方案2】:

我确实记得 mysql 只有 myisam 而 innodedb 正在开发的时代。 MyIsam 没有外键,因为它是不支持数据库关系的旧系统。它永远不会使用外键!要使用它,你有 innodb。如果您不需要所有东西,例如 DB 中的关系,请使用 MyISAM 以获得更好的性能。

【讨论】:

    猜你喜欢
    • 2011-12-23
    • 2020-04-04
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    相关资源
    最近更新 更多