42

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

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

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

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

2 回答 2

49
  1. 请告诉我,在这种情况下,我必须使用什么引擎来提高性能?

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

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

    外键差异下所述:

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

    因此,外键约束还没有在MyISAM.

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

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

    MySQL 5.6 中的新增功能中所述

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

    InnoDB因此,在MySQL 5.6中已经实现了全文搜索。

于 2012-10-19T09:34:22.570 回答
2

I do remember the times when mysql had only myisam and innodedb was in development. MyIsam has no foreign keys because it is old system that does not support relations in database. It will never use foreign keys! To Use it you have innodb. If you don't need all stuff, like relations in DB, use MyISAM to get better performance.

于 2017-11-10T14:35:55.500 回答