【问题标题】:Should i split my table vertically?我应该垂直拆分我的桌子吗?
【发布时间】:2016-07-25 02:21:12
【问题描述】:

我有这张表:

  • ~200k 行(预计增长到大约 100 万行)
  • 大约 40 列(可能会略有增长)

前 20 列被所有行使用,但其余 20 列仅被大约 2% 的行使用,其余的为 null。查询主要在第一列上运行。

我的问题是,将它们拆分为具有 1:1 关系的单独表格是否具有任何性能优势(或任何实际的优点/缺点)。这些列是日期、整数和短字符串的混合。它将在 Azure SQL 上运行,并且我使用 ORM。

【问题讨论】:

  • 这似乎不是问题。您是否对其进行了监控/分析?您是否遇到任何具体问题?
  • 感谢回复,我没有看数字,我正在交换数据库技术,所以我有机会重组。有人称之为过早优化...

标签: sql-server database-design query-optimization


【解决方案1】:

嗯,这取决于。从存储引擎的角度来看,拆分表将使主表中的行更小,单页上的行更多,一次读取的数据更多,因此可能会获得更好的性能。 但这在很大程度上取决于您的大多数查询是否会加入子表。 当然,您应该测试这两种方法,并考虑稀疏列功能 (https://msdn.microsoft.com/en-us/library/cc280604.aspx)。

【讨论】:

  • 感谢您的输入,不知道 SPARSE。看来我得做一些测试了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多