大型表上的SQL索引:一些大型索引或更小的索引?

时间:2012-05-04 07:56:26

标签: sql-server performance sql-server-2008 indexing

我有一个+/- 8000万行(分区)的表。

插入物变得有点慢(大约1-3秒)。 查询计划表示插入的68%是clustered index insert,但每次插入/更新和删除时,表上也有一些触发器。所以很难说真正造成时间的是什么。

无论如何,我们在该表上有一些索引,其中一些有3-5列。

我想知道的是什么更好,性能更好: 要使一些索引包含多列,或者使用更少列的更小索引?

欢迎提供所有提示和建议。

1 个答案:

答案 0 :(得分:4)

  

查询计划表示插入的68%是聚簇索引插入,但每次插入/更新和删除时,表上也有一些触发器。所以很难说真正造成时间的是什么。

我认为很明显,这是导致问题的触发因素。在没有触发器的情况下,在这样一个小型表上插入单行非常不可能需要3秒。您可以尝试删除它们,看看您的插入是否仍然很慢。

  

要使某些索引包含多个列,或者使用更少列的索引更小?

您应该查看您的查询并查看他们使用的索引。要优化读取性能,如果慢查询可能会受益,则应添加索引 - 这可以是单列索引,也可以是多列索引,具体取决于特定查询。要优化写入性能,您应该删除所有未使用的索引。