4

我有 8 组数据,每组约 30,000 行,数据结构相同,只是针对不同的语言。

网站前端会获得比较高的流量。

所以我的问题是关于 MySQL 性能,如果我应该有一个包含一列的表来区分数据属于哪个集(即列“语言”)或为每个语言集创建单独的表?

(解释为什么如果可能的话会非常有帮助)

提前感谢沙迪

4

4 回答 4

5

我会选择单桌设计。无论表有多“宽”,使用适当索引的查找时间都应该完全相同。

除了性能问题,这将简化设计和与其他表(外键等)的关系。

于 2009-07-23T09:02:12.847 回答
2

“每种语言一个表”设计的另一个缺点是每次添加一个表时都必须更改模式。

语言列意味着您只需要添加数据,这不是侵入性的。后者是要走的路。

于 2009-07-23T10:01:28.830 回答
2

我也会选择单桌设计。由于 language_key 的基数非常低,我将通过 language_key 对表进行分区,而不是定义索引。(如果您的数据库支持它。)

于 2009-07-23T10:12:14.953 回答
0

我同意其他回复 - 我会使用一张桌子。关于性能优化,许多事情可能会对性能产生更大的影响:

  • 适当的索引
  • 编写/测试查询效率
  • 选择合适的存储引擎
  • 硬件
  • 文件系统的类型和配置
  • 优化mysql配置设置

...等等。我是高性能 MySQL的粉丝

于 2009-07-23T13:10:39.877 回答