基本上我有一个lang
表,其中包含pg VARCHAR(20)
,id VARCHAR(20)
,en (TEXT)
,ru (TEXT)
列,用于我网站的多语言支持和99.999%的案例数据将从表中读取而不是写入。我听说MyISAM在面向读取的表上比InnoDB表现更好;该表应该是MyISAM还是InnoDB,考虑到只有pg
列用作WHERE
子句?
答案 0 :(得分:1)
前言:我不是DBA。
我认为MyISAM的主要优点是它实际上会对您指定的字段进行索引,而不是将每个指定的索引编入索引到强制自动生成的主键ID(la InnoDB)。这里的一大优势是,如果你想要包含多个字段的索引,如(pg,en,ru)上的单个索引,MyISAM实际上可以创建一个索引,而不是将每个索引编入id并将三个查找作为较慢的等价。
在您的情况下,如果您只想搜索一个字段,您可能会从MyISAM获得适度的性能提升,因为它只需查看该字段即可检索您的行。 InnoDB将从您的字段中获取ID列表,然后按ID检索行。无论如何,这几乎都是优化的。
如果没有明显的优势,我会做更清洁或更容易的事情。如果您真的想知道答案,可能需要对其进行基准测试。
同样,我不是DBA,所以也许我已经离开这个了!