请在关闭之前阅读问题,因为有很多关于此的问题,但至少我没有找到我要找的东西。
现在清楚的是:
MyIsam is faster at searching strings (much faster)
InnoDB is faster at joins (much faster)
所以我的问题是:我有以下设置:
两个表,假设 t1 具有列 id
、bla1
、bla2
、...、blan
;和 t2 具有列 t1Id
、extra1
、extra2
、...、extran
。
表 1 (t1) 是 InnoDB(需要对其进行事务处理,这样就很清楚了)。表 2 (t2) 始终与 t1 一起使用(在某些特定情况下是额外数据),因此在出现 t2 的地方之间始终存在连接。那将指向 InnoDB。问题是,在加入后,还将(始终)对其中一列内的字符串进行搜索。这将指向 MyISAM。
得到某物的时间显然是加入时间和搜索时间的总和。问题是,如果我优化其中一个,就会使另一个变慢。
奖励事实:表真的非常大,t2 从不需要事务、行锁或任何通常强加 InnoDB 的东西。
什么是更好的选择? MyISAM 还是 InnoDB?
最佳答案
唯一可以肯定的方法是创建两个表,用示例数据加载它们并测量您的查询。
一般来说,我会推荐你使用 InnoDB:
- 由于 MySQL 5.6 全文搜索在 InnoBD ( http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html ) 中也可用,所以我认为您将失去 MyISAM 快速字符串搜索作为主要优势
- 使用 MyISAM,您不仅会失去行锁定支持,还会失去外键以及数据完整性 + 不要忘记 MyISAM“崩溃”
关于mysql - MyISAM 或 InnoDB - 加入速度与查找速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16542634/