MySQL 性能:单表或多表
Posted
技术标签:
【中文标题】MySQL 性能:单表或多表【英文标题】:MySQL Performance: Single table or multiple tables 【发布时间】:2010-11-13 07:40:45 【问题描述】:我有 8 组数据,每组大约 30,000 行,数据结构相同,只是针对不同的语言。
网站前端会获得比较高的流量。
所以我的问题是关于 mysql 的性能,如果我应该有一个包含一列的表来区分数据属于哪个集(即列“语言”)还是为每个语言集创建单独的表?
(如果可能的话,解释一下为什么真的很有帮助)
提前致谢 沙迪
【问题讨论】:
【参考方案1】:我会选择单表设计。无论表有多“宽”,寻找时间,使用适当的索引,都应该完全相同。
除了性能问题,这将简化设计和与其他表的关系(外键等)。
【讨论】:
【参考方案2】:“每种语言一个表”设计的另一个缺点是每次添加一个表时都必须更改架构。
语言列意味着您只需要添加数据,这不是侵入性的。后者是要走的路。
【讨论】:
你可以用正常的关系来做到这一点:translationStrings(stringId, string), translations(stringId, languageId, translation) - 它可能会在选择时增加一个关系/外键/连接,但增加了灵活性。 【参考方案3】:我也会采用单桌设计。由于 language_key 的基数非常低,我将通过 language_key 对表进行分区,而不是定义索引。 (如果你的数据库支持的话。)
【讨论】:
【参考方案4】:我同意其他回答 - 我会使用一张桌子。关于性能优化,许多因素可能会对性能产生更大的影响:
适当的索引 编写/测试查询效率 选择合适的存储引擎 硬件 文件系统的类型和配置 优化mysql配置设置...等等。我是High Performance MySQL的粉丝
【讨论】:
以上是关于MySQL 性能:单表或多表的主要内容,如果未能解决你的问题,请参考以下文章