Поделиться через


Использование некластеризованных индексов Columnstore

Описывает ключевые задачи для использования некластеризованного индекса columnstore в таблице SQL Server.

Общие сведения об индексах columnstore см. в описании индексов Columnstore.

Сведения об кластеризованных индексах columnstore см. в разделе "Использование кластеризованных индексов columnstore".

Содержимое

Создание некластеризованного индекса Columnstore

Чтобы загрузить данные в некластеризованный индекс columnstore, сначала загрузите данные в традиционную таблицу rowstore, хранящуюся в куче или кластеризованном индексе, а затем используйте CREATE COLUMNSTORE INDEX (Transact-SQL) для создания индекса columnstore.

Загрузка данных в колонночно-хранилищный индекс

Изменение данных в некластеризованном индексе Columnstore

После создания некластеризованного индекса columnstore в таблице невозможно напрямую изменить данные в этой таблице. Запрос с INSERT, UPDATE, DELETE или MERGE завершится ошибкой и возвращает сообщение об ошибке. Чтобы добавить или изменить данные в таблице, можно выполнить одно из следующих действий:

  • Отключите индекс columnstore. Затем можно обновить данные в таблице. При отключении колонностороннего индекса вы можете перестроить его после завершения обновления данных. Рассмотрим пример.

    ALTER INDEX mycolumnstoreindex ON mytable DISABLE;
    -- update mytable --
    ALTER INDEX mycolumnstoreindex on mytable REBUILD
    
  • Удалите индекс columnstore, обновите таблицу и повторно создайте индекс columnstore с помощью CREATE COLUMNSTORE INDEX. Рассмотрим пример.

    DROP INDEX mycolumnstoreindex ON mytable
    -- update mytable --
    CREATE NONCLUSTERED COLUMNSTORE INDEX mycolumnstoreindex ON mytable;
    
    
  • Загрузите данные в промежуточную таблицу, которая не содержит индекс columnstore. Создайте индекс columnstore в промежуточной таблице. Переключите промежуточную таблицу в пустой раздел основной таблицы.

  • Переключите секцию из таблицы с индексом columnstore в пустую промежуточную таблицу. Если в промежуточной таблице есть колоночный индекс, отключите колоночный индекс. Выполнение любых обновлений. Создайте (или перестройте) индекс columnstore. Переложите промежуточную таблицу в теперь пустой раздел основной таблицы.