2011-03-21 32 views
0

我目前正在使用MS SQL 2005,并且有一个包含17列的表,并且每行中的数据占用的空间仅比MS SQL 2005中允许的数量(每行/记录)少。由于存储在这个表中的数据是从我不受控制的Excel表单输入的,我无法将其分解成更小的表格。单个大型sql表或多个小型sql表?

现在重点是,对于网站上使用此数据库的几乎所有内容,该主表提供了结果集,并且这些结果集是以前已知的。所以,哪两个更好: a)我每次都使用大表。 b)我创建了较小的表格,并在数据在大表格中编辑后立即填充/填充它们。

例如:包含产品详细信息的Excel工作表从各个制造商到达(几乎每周),并且它们存储在PRODUCTS(大)表中。现在有喜欢的查询:

SELECT DISTINCT Brand_name, Model_name FROM PRODUCTS

SELECT DISTINCT Brand_name, Model_name FROM PRODUCTS WHERE Price < 10和10-15喜欢这些。

现在我的问题是:我是否应该为这些东西构建已经聚集的表格,这些表格总数大约比PRODUCTS表格还要多5个表格,并且在表格进入时更新它们,或者我应该只执行所有的检索查询产品表?

PRODUCTS表一次最多可包含约500,000行。

+0

什么是表格定义?当可变长度可能更好时,您是否使用固定长度列? – 2011-03-21 17:28:17

+0

是的,我使用varchar(n)(这个n根据列而变化)15列,浮动两列。还没有真正了解可变长度列 – Anchit 2011-03-21 17:31:35

+1

@ Anchit - 你应该在SQL Server 2005的行限制之外,然后(尽管如果行大于8000字节,它们会溢出到row_overflow页面中) – 2011-03-21 17:34:40

回答

4

我会倾向于坚持你的单一表。 500k的记录不是太大。如果你确定它正确使用的索引,你可能会发现它很快。

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

+0

好的,所以我在SQL中是一个n00b,你能否给我一个关于创建索引的好文章的链接,是的,我如何检查它们的速度? o_0(对不起,这样的noob) – Anchit 2011-03-21 17:35:39

+2

请尝试http://www.sqlservercentral.com/articles/Performance+Tuning/indexcreationguidelines/1389/它可能需要免费注册才能阅读。它是与SQL有关的所有东西的绝佳网站。 – bendemes 2011-03-22 09:03:57

+0

非常感谢。只需检查链接。 – Anchit 2011-03-22 11:28:45