在每个外键上添加索引 - 优点和缺点?

时间:2011-09-22 15:07:45

标签: sql sql-server-2008

我们有一个附加到我们的Web应用程序的SQL Server 2008 R2数据库。每天都会添加数据,但会针对它运行许多报告。因此,数据的读取频率远高于写入数据。

报告运行缓慢,添加“建议索引”有所帮助,但我认为只添加每个外键将有助于最全面。

有任何缺点吗?我们已经在星期六进行了全面维护(重建索引等)。所以这不是问题。

或者,最好只为OVER X行的所有表添加所有Fkeys的索引,其中x为1000?

任何帮助表示赞赏!

PS,最大的表只有570288行,下一个最大的273255.总共188个表,但只有32个行超过1000行!

1 个答案:

答案 0 :(得分:2)

少于1000行的那些探测器不会从索引中获益太多,特别是如果父表和子表都很小的话。无论如何,SQL Server都可能进行全表扫描。在这种情况下,您可能只是通过添加索引在插入上添加头部。大多数情况下,大表应该在FK字段上有索引,除非由于非规范化而很少在连接中使用它们。

在你的情况下,我可能会为大表(或者你希望变大的表)放置索引,并将它们放在小表上,看看性能是否有所提高。然后,如果您仍然有一些运行缓慢的查询,请单独查看它们。