Запрос на обновление SQL Server, который обновляет только саму таблицу, а не индексы - PullRequest
0 голосов
/ 27 августа 2011

Мне нужно написать запрос, который обновляет только таблицу, а не индексы, потому что я хочу обновить поле int и не нужно 10 огромных индексов для обновления

Ответы [ 3 ]

6 голосов
/ 27 августа 2011

Если поле int включено в любое из определений индекса, их также необходимо обновить.

SQL Server не позволяет базовой таблице иметь одно значение, а индексам - другое по очевидным причинам целостности данных.

Если поле int не включено ни в одно из определений индексатогда только таблица будет обновлена ​​в любом случае.

Вы можете отключить индексы, но для их повторного включения требуется перестройка всего индекса.

5 голосов
/ 27 августа 2011

Это зависит от того, что вы действительно хотите сделать

Поддержание индекса в соответствии с данными таблицы - это согласованность в ACID . Вот как работают SQL Server и RIDBMS, совместимые с ACID.

В таких случаях, как массовые загрузки, требуется задержать эту последовательность. Так что, если у вас есть этот вариант использования, УДАЛИТЕ или ОТКЛЮЧИТЕ индексы.

Если вы отключите индексы:

  • они никогда не будут использоваться для любого запроса -
  • все связанные уникальные и внешние ключи и т. Д. Тоже будут отключены
  • они не поддерживаются

Если вы отбросите их, конечно, они также не могут быть использованы.

После завершения массовой загрузки вы снова включаете или создаете индексы / ограничения.

Если это то, что вы действительно хотите, тогда прочитайте MSDN:

1 голос
/ 27 августа 2011

Возможно Отфильтрованные индексы - это то, что вы ищете.

Это функция SQL Server 2008, которая позволяет создавать индекс, который применяется только к определенным значениям в столбце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...