0

基本上,我有一个包含、、 、lang列的表,用于我的网站的多语言支持,在 99.999% 的情况下,数据将从表中读取而不是写入。我听说 MyISAM 在面向读的表上表现比 InnoDB 好;考虑到只有列用作子句,该表应该是 MyISAM 还是 InnoDB?pg VARCHAR(20)id VARCHAR(20)en (TEXT)ru (TEXT)pgWHERE

4

1 回答 1

1

前言:我不是DBA。

我认为 MyISAM 的主要优点是它实际上会在您指定的字段上建立索引,而不是将每个指定的索引索引到强制自动生成的主键 id(a la InnoDB)。这里最大的优势是,如果您想要包含多个字段的索引,例如 (pg, en, ru) 上的单个索引,MyISAM 实际上可以创建一个索引,而不是将每个索引索引到 id 并执行三个查找作为较慢的等效项。

在您的情况下,如果您只想搜索一个字段,您可能会从 MyISAM 获得适度的性能提升,因为它只需要查看那个字段即可检索您的行。InnoDB 将从您的字段中获取 id 列表,然后按 id 检索行。无论如何,这几乎就是它的优化目标。

如果没有明显的优势,我会做任何更清洁或更容易的事情。如果您真的想知道答案,您可能需要对其进行基准测试。

再说一次,我不是 DBA,所以也许我在这方面还差得远!

于 2012-11-14T22:49:09.030 回答