Имеет ли значение порядок столбцов в индексе columnstore в SQL Server 2012? - PullRequest
11 голосов
/ 02 апреля 2012

У меня есть таблица с ~ 200 миллионами строк и ~ 15 столбцами.Я планирую создать индекс хранилища столбцов на моей таблице.Будут ли какие-либо изменения производительности в зависимости от порядка столбцов, которые я использую в индексе хранилища столбцов?Если да, какая логика стоит за этим?

Ответы [ 4 ]

5 голосов
/ 10 мая 2012

Наиболее важным аспектом является добавление ВСЕХ столбцов в индекс Columnstore.Я говорил об этом с командой разработчиков MSFT, потому что скептически относился к утверждению, что «порядок столбцов не имеет значения».Но они подтвердили, что до тех пор, пока вы добавляете все столбцы таблицы, это действительно так.

Я также пробовал частичные индексы columnstore (то есть, добавляя только подмножество столбцов), пока я мог получать запросыЯ протестировал использование этого индекса columnstore. Очевидно, что Оптимизатор запросов не построен для этого сценария, поскольку планы выполнения будут нестабильными и не всегда оптимальными, т. Е. Использовать индексы columnstore и non-columnstore и т. Д.

3 голосов
/ 02 апреля 2012

Нет, это не имеет никакого значения.

1 голос
/ 14 августа 2014

Это не так.

Я только что создал 2 часа назад индекс columnstore для моей таблицы фактов, и теперь стоимость запроса (относительно пакета) составляет 14% с индексом и 86% без индекса. Я думаю, что это довольно хорошо. План выполнения ниже. Вы можете использовать «OPTION (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX)» при запуске запроса для сравнения

http://uploadimage.ro/img.php?image=4508_execution_plan_sk6y.png

1 голос
/ 12 апреля 2012

Нет, порядок столбцов не имеет значения, также добавьте все столбцы, которые вам нужны, в индекс хранилища столбцов для всех ваших вариантов использования, поскольку может быть только один индекс хранилища столбцов, это не повлияет на производительность.

...