MySQL 效率 - 2 个单独的表或连接

Posted

技术标签:

【中文标题】MySQL 效率 - 2 个单独的表或连接【英文标题】:MySQL efficiency - 2 seperate tables or join 【发布时间】:2016-06-06 10:51:54 【问题描述】:

我有一个关于 mysql 效率的问题。

如果我有 2 个非常大的数据表,它们的列相似。而且我需要将数据一起显示,将表合并为1或使用连接会更好吗?

请记住,随着时间的推移,每个表中可能会有数百万行,因此合并会使表大小翻倍。

提高效率的最佳方法是什么?

是否值得分离数据?

【问题讨论】:

当列相似时,为什么要将它们分隔在两个不同的表中? 因为数据略有不同。我只是好奇加入 2 个较小的表是否比拖网数百万行数据更有效? 如何为您的数据库提供上下文。有时它可能是有道理的,如果结构设计不佳、冗余、未来考虑,您甚至可能会获得优化想法。由于没有发布实际数据,甚至可以编辑您的帖子并放置您的 CREATE TABLE 语句以查看差异。 【参考方案1】:

取决于实际数据。如果两个表中的数据类型相同,则将它们放在一个表中。

MySQL 能够处理数百万行。当您真正看到性能问题时,您应该再次询问。

您的意思是“使用联合”?通过使用连接,您可以将列添加到结果集中,似乎您更想添加行。

【讨论】:

我试图提前考虑并以最有效的方式构建数据库,而不是等到出现性能问题。 在不知道数据类型和应用程序的情况下,很难预测问题。也许您想研究分片以将数据库拆分到不同的服务器上。 mysql.com/products/cluster/scalability.html【参考方案2】:

如果您的表具有良好的索引,并且您的连接子句在键值上,那将比只有 1 个大型表更好。

看看这个帖子:http://***.com/questions/8184903/performance-joining-tables-vs-large-table-with-redundant-data

正如它所说,没有正确答案,但在这两种情况下都取决于您自己的测试。

【讨论】:

以上是关于MySQL 效率 - 2 个单独的表或连接的主要内容,如果未能解决你的问题,请参考以下文章

SQL 中级语法 2自连接的用法

存储用户并传入单个表或单独的表

MySQL 性能:单表或多表

mysql 一张有近一百个字段的表,通过主键查询数据非常慢,查询一条数据需要2秒左右。怎么作优化

在时间戳略有不同的2个不同数据库中的表之间连接(MySQL)

26.MySQL中的内连接INNER JOIN