Skip to content

Что случится, если отключить кластеризованный индекс?

Пересказ статьи Kenneth Fisher. What happens if I disable the clustered index?



Вы, вероятно, уже знаете, что индекс можно отключить. Это может быть удобно при большой загрузке, а загрузка + включение индексов (вы должны будете полностью перестроить их) быстрей, чем загрузка при включенных индексах. Я знаю мало случаев, когда это помогало, но иногда это может оказаться удобным трюком. Следует сказать, что это справедливо только для некластеризованных индексов. А что случится, если отключить кластеризованный индекс?

CREATE TABLE DisableMe (
Id INT,
Col1 varchar(50),
INDEX ci_DisableMe CLUSTERED (Id)
);
INSERT INTO DisableMe VALUES
(1,'One')
,(2,'Two')
,(3,'Three');
GO
SELECT FROM DisableMe;
GO




ALTER INDEX ci_DisableMe ON DisableMe DISABLE;
GO
SELECT
FROM DisableMe;
GO
Msg 8655, Level 16, State 1, Line 20

Обработчику запросов не удалось предоставить план,
потому что индекс "ci_DisableMe" таблицы или представления "DisableMe" отключен.

Все правильно, так? Я имею в виду, что кластеризованный индекс - это и есть таблица, поэтому если отключить индекс, то и выполнять чтение неоткуда. Кроме того, просто чтобы вы знали, действие отключения кластеризованного индекса отключит все некластеризованные индексы, и их нельзя будет снова включить, пока не будет включен/перестроен CI (кластеризованный индекс). Опять же нет данных, чтобы перестроить некластеризованный индекс. И единственный способ повторно включить кластеризованный индекс - это перестроить его (т.е. снова сделать доступной таблицу).

ALTER INDEX ci_DisableMe ON DisableMe REBUILD;
GO
SELECT * FROM DisableMe;
GO


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

DROP INDEX DisableMe.ci_DisableMe;
GO

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.