为什么MySQL的MyISAM引擎不支持外键?

时间:2012-10-19 09:27:59

标签: mysql database innodb myisam

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

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

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

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

2 个答案:

答案 0 :(得分:41)

  1.   

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

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

  2.   

    为什么MyISAM引擎不支持外键关系和InnoDB呢?

    正如Foreign Key Differences所述:

      

    稍后,还将为MyISAM表实施外键约束。

    因此,在MyISAM

  3. 中尚未实现外键约束

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

    1.   

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

      正如What Is New in MySQL 5.6所述:

        

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

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

答案 1 :(得分:0)

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