【发布时间】:2011-03-22 01:31:10
【问题描述】:
我目前正在使用 MS SQL 2005,并且有一个包含 17 列的表,并且每行中的数据占用的空间仅比 MS SQL 中允许的空间(每行/记录)少一点2005 年。可以肯定的是,我不能将其分解为更小的表格,因为存储在此表格中的数据是从我无法控制的内容的 Excel 表格中输入的。
现在的重点是,对于网站上使用此数据库的几乎所有内容,主表都提供结果集,而这些结果集是先前已知的。所以,这将是更好的两个: a) 我每次都使用大桌子。 b)我创建较小的表,并在大表中编辑数据后立即取消填充/填充它们。
例如:包含来自不同制造商的产品详细信息的 Excel 表(几乎每周)到达,它们存储在 PRODUCTS(big) 表中。现在有这样的查询:
SELECT DISTINCT Brand_name, Model_name FROM PRODUCTS
和
SELECT DISTINCT Brand_name, Model_name FROM PRODUCTS WHERE Price < 10 和大约 10-15 个这样的人。
现在我的问题是:我应该为这些东西构建已经聚合的表,这些表比 PRODUCTS 表多大约 5 个,并在有工作表时更新它们,还是应该只在 PRODUCTS 上执行所有检索查询桌子?
PRODUCTS 表一次最多包含大约 500,000 行。
【问题讨论】:
-
表定义是什么?当可变长度可能更好时,您是否使用固定长度的列?
-
是的,我使用 varchar(n)(这个 n 因列而异)15 列,浮动两列。还没有真正了解可变长度列
-
@Anchit - 你应该远不及 SQL Server 2005 中的行限制(尽管如果行大于 8000 字节,它们将溢出到 row_overflow 页面)
-
@Martin - 老实说,在这一天之前,表定义是这样的,如果定义被充分利用,行大小肯定会超过行限制(我没有设计桌子)。就在今天我注意到了这一点,也是早些时候,每个制造商都有不同的表(其中大约 9 个,具有相同的架构),所以我将它们整合到一个表中。
-
@Martin - 是的,该网站自过去 6 个月以来一直运行没有任何问题,但我同意行大小很高,如果充分利用分配的空间可能会出现问题,您建议我可以使用什么方法来减小尺寸?