我应该垂直分割我的桌子吗?

时间:2016-04-05 08:45:34

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

我有这张表:

  • ~20万行(预计将增长到大约一百万)
  • 大约40列(可能略有增长)

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

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

1 个答案:

答案 0 :(得分:3)

嗯,这取决于。从存储引擎perspactive,分割表将在主表中提供较小的行,单个页面上的行数更多,一次读取的数据更多,结果可能是更好的性能。 但这在很大程度上取决于您的大多数查询是否会加入子表。 当然,您应该测试这两种方法,并且还要考虑稀疏列功能(https://msdn.microsoft.com/en-us/library/cc280604.aspx)。