我正在为我的研究写一个网络应用程序,其中包括全文搜索和外键。为什么MySQL的MyISAM引擎不支持外键?
我已经读过某处,MyISAM引擎适用于全文搜索,而InnoDB适用于外键。
在这种情况下,我应该使用哪种引擎来获得最佳性能?
- 为什么MyISAM不支持外键关系,但InnoDB呢?
- 为什么MyISAM支持全文搜索,但InnoDB不支持?
我正在为我的研究写一个网络应用程序,其中包括全文搜索和外键。为什么MySQL的MyISAM引擎不支持外键?
我已经读过某处,MyISAM引擎适用于全文搜索,而InnoDB适用于外键。
在这种情况下,我应该使用哪种引擎来获得最佳性能?
请告诉我,在这种情况下,我必须使用提升性能的发动机是什么?
每个存储引擎的性能将取决于您执行的查询。但是,请注意,同一数据库中的不同表可以使用不同的存储引擎。
为什么MyISAM引擎不支持外键关系和InnoDB呢?
由于Foreign Key Differences下记载:
在后一阶段,外键约束会为
MyISAM
表实现好。
因此,外键约束在MyISAM
中根本还没有实现。
编辑:由于该意见从文档删除,看来,它不再计划实施MyISAM
引擎外键约束。
为什么MyISAM引擎不支持全文搜索和InnoDB不?
由于What Is New in MySQL 5.6下记载:
您可以在
InnoDB
表创建FULLTEXT
索引,并使用MATCH() ... AGAINST
语法对它们进行查询。
因此,从MySQL 5.6起,全文搜索已在InnoDB
中实施。
我没有看到引用“在稍后的阶段,外键约束也将为MyISAM表执行。”在MySQL文档中。也许这个功能已经没有路线图了? – shabbychef
@shabbychef:你说得对 - 看起来评论在[2013年9月10日](http://web.archive.org/web/20130910041553/http://dev.mysql.com/doc) /refman/5.6/en/ansi-diff-foreign-keys.html)和[2013年10月11日](http://web.archive.org/web/20131011141007/http://dev.mysql.com/doc /refman/5.6/en/ansi-diff-foreign-keys.html);在当前文档的其他地方我看不到任何参考文献,表明FK约束将来仍然适用于MyISAM,我也不能看到有关此更改的任何特定文档/讨论/记录。所以是的,我猜想它不再计划。 – eggyal
我记得mysql只有myisam和innodedb在开发的时候。 MyIsam没有外键,因为它是不支持数据库中关系的旧系统。它永远不会使用外键!要使用它,你有innodb。如果你不需要所有的东西,比如DB中的关系,那么使用MyISAM来获得更好的性能。
哪里是'somewhere'?我相信这是解释'somewhere' – ajreal
功能默认情况下不存在。有人需要实施它们。 –
@ajreal我已经读过我的大学书。这本书解释了引擎的优点和缺点。 – Firefox101