【发布时间】:2011-05-29 11:48:42
【问题描述】:
我想在我的表中添加索引。 我正在寻找如何向表中添加更多索引的一般想法。 除了 PK 集群。 我想知道当我这样做时要寻找什么。 所以,我的例子:
这个表(我们称之为 TASK 表)将成为整个应用程序中最大的表。预计有数百万条记录。
重要提示:大量批量插入正在此表中添加数据
表格有 27 列:(到目前为止,还在计数:D)
int x 9 列 = id-s
varchar x 10 列
位 x 2 列
日期时间 x 5 列
INT 列
所有这些都是 INT ID,但来自通常小于任务表(最多 10-50 条记录)的表,例如:状态表(具有“打开”、“关闭”等值)或优先级表(具有“重要”、“不那么重要”、“正常”等值) 还有一个类似“parent-ID”的列(self-ID)
join:所有“小”表都有PK,通常的方式...聚集
字符串列
有一个(公司)列(字符串!)类似于“一直有 5 个字符”,每个用户都将被限制使用这个。如果在任务中有 15 个不同的“公司”,则登录用户只会看到一个。所以总是有一个过滤器。向该列添加索引可能是个好主意?
日期栏
我认为他们没有索引这些......对吗?或者可以/应该是?
【问题讨论】:
-
从查询开始设计索引。基本上,每个索引都旨在覆盖查询或强制执行约束。
-
索引设计指南:msdn.microsoft.com/en-us/library/ms191195。在进一步做任何事情之前阅读它们。
标签: sql sql-server-2005 database-design clustered-index non-clustered-index