Отключить индексы SQL Server

В этом руководстве вы узнаете, как использовать оператор ALTER TABLE для отключения индексов таблицы.

SQL Server Отключить индексные операторы

Чтобы отключить индекс, используйте оператор ALTER INDEX следующим образом:

ALTER INDEX index_name
ON table_name
DISABLE;

Чтобы отключить все индексы таблицы, используйте следующую форму оператора ALTER INDEX:

ALTER INDEX ALL ON table_name
DISABLE;

Если вы отключите индекс, оптимизатор запросов не будет учитывать этот отключенный индекс при создании планов выполнения запросов.

При отключении индекса в таблице SQL Server сохраняет определение индекса в метаданных, а статистику индекса — в некластеризованных индексах. Однако, если вы отключите некластеризованный или кластеризованный индекс в представлении, SQL Server физически удалит все данные индекса.

Если вы отключите кластеризованный индекс таблицы, вы не сможете получить доступ к данным таблицы с помощью языка манипулирования данными, такого как SELECT, INSERT, UPDATE и DELETE, пока не перестроите или не удалите индекс.

Примеры отключения индекса SQL Server

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

A) Отключение примера индекса

В этом примере используется ALTER INDEX для отключения индекса ix_cust_city в таблице sales.customers:

ALTER INDEX ix_cust_city 
ON sales.customers 
DISABLE;

В результате следующий запрос, который находит клиентов, находящихся в Сан-Хосе, не может использовать отключенный индекс:

SELECT    
    first_name, 
    last_name, 
    city
FROM    
    sales.customers
WHERE 
    city = 'San Jose';

Вот предполагаемый план выполнения запроса:

SQL Server Отключение индекса — пример отключения одного индекса

Б) Отключение всех индексов таблицы. Пример

Этот оператор отключает все индексы таблицы sales.customers:

ALTER INDEX ALL ON sales.customers
DISABLE;

Следовательно, вы больше не сможете получить доступ к данным в таблице.

SELECT * FROM sales.customers;

Вот сообщение об ошибке:

The query processor is unable to produce a plan because the index 'PK__customer__CD65CB855363011F' on table or view 'customers' is disabled.

Обратите внимание, что вы узнаете, как включить индекс в следующем уроке.

В этом уроке вы узнали, как использовать оператор ALTER INDEX для отключения индексов таблицы.

Мирослав С.

Автор статей, ИБ-специалист