假设SQL Server中有两列int
类型的列。这两列中的值经常使用ROWLOCK
提示更新为单行,并且唯一行ID是PK。
例如
UPDATE SomeTable WITH(ROWLOCK)
SET SuccessCount = {0}, ErrorCount = {1}
WHERE RecordId = {2}
如果SuccessCount
和ErrorCount
未在任何SELECT
个查询中使用,那么如果将这两列添加到{SomeTable
的非聚集索引中,性能方面会有所不同吗? 1}}?
答案 0 :(得分:2)
索引是关于表的元数据。
包括从未直接搜索过的更改数据的索引(读取从未使用过索引的位置)由于引擎必须维护索引,因此会增加开销。如果不直接搜索这两个字段,那么包含这些列的索引是无意义的开销。
只有在减少搜索时间(频率和时间节省)带来的好处超过维护索引的成本(任何插入,更新或删除的开销)时,才应添加索引
在这种情况下,永远不会有任何好处,因为它们从未被直接搜索过。因此,纯粹的成本;没有储蓄......不要这样做。