在关闭之前阅读问题作为重复请,因为有很多关于此的问题,但至少我没有找到我想要的东西。
现在很清楚的是:
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?