Мы используем MS SQL Server 2005.Почему кластеризованный индекс обновляется при обновлении поля, которое не включено в этот индекс (Ms SQL)?
Привет, Я выполняю инструкцию UPDATE в таблице базы данных. Допустим, эта таблица имеет следующие colums:
int Id PK
int Column1
int Column2
Он также имеет несколько индекс:
Unique Clustered (Id)
Non-Unique Non-Clustered (Column1)
Non-Unique Non-Clustered (Column2)
я следующую операцию:
UPDATE [dbo].[Table]
SET Column1 = @Value1
WHERE Column1 = @Param1
AND Column2 = @Param2
Фактическое выполнение плана после того, как это выглядит следующим образом:
Который говорит, что 86% времени было потрачено на обновление кластерного индекса, whi ch не включает столбец, который я только что изменил.
Эта операция должна выполняться сотни тысяч раз с отключением веб-приложения, что означает, что это очень важно для времени.
Итак, есть ли у кого-нибудь идеи, почему все идет так, и если это можно как-то исправить? Имеет ли смысл этот вопрос? Я готов предоставить дополнительную информацию, если это необходимо.
кластерный индекс магазинов * все * данные для каждой строки. –
Кроме того, оператор показан в комплекте 2 обновления индекса. Посмотрите на свойства. – usr
Добавить состояние и cOLUMN1 <> @ Value1. Taking замок - дорогая часть. – Paparazzi