如果仅在UPDATE查询中使用的列被索引,这会有什么不同吗?

时间:2014-10-10 19:34:25

标签: sql sql-server

假设SQL Server中有两列int类型的列。这两列中的值经常使用ROWLOCK提示更新为单行,并且唯一行ID是PK。

例如

UPDATE SomeTable WITH(ROWLOCK) 
SET SuccessCount = {0}, ErrorCount = {1} 
WHERE RecordId = {2}

如果SuccessCountErrorCount未在任何SELECT个查询中使用,那么如果将这两列添加到{SomeTable的非聚集索引中,性能方面会有所不同吗? 1}}?

1 个答案:

答案 0 :(得分:2)

索引是关于表的元数据。

包括从未直接搜索过的更改数据的索引(读取从未使用过索引的位置)由于引擎必须维护索引,因此会增加开销。如果不直接搜索这两个字段,那么包含这些列的索引是无意义的开销。

只有在减少搜索时间(频率和时间节省)带来的好处超过维护索引的成本(任何插入,更新或删除的开销)时,才应添加索引

在这种情况下,永远不会有任何好处,因为它们从未被直接搜索过。因此,纯粹的成本;没有储蓄......不要这样做。