【问题标题】:A single big sql table or multiple small sql tables?一个大 sql 表还是多个小 sql 表?
【发布时间】: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 个月以来一直运行没有任何问题,但我同意行大小很高,如果充分利用分配的空间可能会出现问题,您建议我可以使用什么方法来减小尺寸?

标签: sql-server-2005 aggregate


【解决方案1】:

我倾向于坚持使用您的单桌。 50 万条记录并不过分。如果您确保它为您在其上使用的常见选择正确索引,您可能会发现它相当快。

尝试运行一些受控且可重复的测试,看看使用正确的索引可以获得什么样的速度增益。

【讨论】:

  • 好的,所以我在 SQL 方面相当熟练,能否请您提供一篇关于创建索引的好文章的链接,还有,我如何检查它们的速度? o_0(对不起,我是个菜鸟)
  • 试试sqlservercentral.com/articles/Performance+Tuning/… 它可能需要免费注册才能阅读。它是所有与 SQL 相关的东西的好网站。
  • 非常感谢。只需查看链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多