【问题标题】:MySQL Performance: Single table or multiple tablesMySQL 性能:单表或多表
【发布时间】:2010-11-13 07:40:45
【问题描述】:

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

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

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

(如果可能的话,解释一下为什么真的很有帮助)

提前致谢 沙迪

【问题讨论】:

    标签: mysql optimization performance mysql5


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 你可以用正常的关系来做到这一点:translationStrings(stringId, string), translations(stringId, languageId, translation) - 它可能会在选择时增加一个关系/外键/连接,但增加了灵活性。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        ...等等。我是High Performance MySQL的粉丝

        【讨论】:

          猜你喜欢
          • 2013-12-21
          • 1970-01-01
          • 1970-01-01
          • 2013-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多