У меня есть таблица с ~ 200 миллионами строк и ~ 15 столбцов. Я планирую создать индекс хранилища столбцов в своей таблице. Будут ли какие-либо изменения в производительности на основе порядка столбцов, которые я использую в индексе хранилища столбцов? Если да, какова его логика?
Поддерживается ли порядок столбцов в индексе столбцов в SQL Server 2012?
Ответ 1
Нет, это не имеет никакого значения.
Ответ 2
Самый важный аспект - добавить ВСЕ столбцы в индекс Columnstore. Я говорил с командой продукта MSFT об этом, потому что я скептически относился к утверждению, что "порядок столбцов не имеет значения". Но они подтвердили, что, пока вы добавляете все столбцы таблицы, это верно.
Я также попробовал частичные индексы столбцов (т.е. добавлял только подмножество столбцов), в то время как мне удалось получить запросы, которые я тестировал, чтобы использовать этот индекс столбцов, очевидно, что оптимизатор запросов не создан для этого сценария, поскольку планы выполнения будет несовместимым и не всегда оптимальным, т.е. использовать индексы столбцов и индексов, и т.д.
Ответ 3
Нет, порядок столбцов не имеет значения, также добавьте все столбцы, которые вам нужны, в индекс хранилища столбцов для всех ваших случаев использования, так как может быть только один индекс хранилища столбцов, это не повредит производительности.
Ответ 4
Это не так.
Я только что создал 2 часа назад индекс столбцов для моей таблицы фактов и стоимость запроса (относительно партии) теперь составляет 14% с индексом и 86% без индекса. Я думаю, это довольно хорошо. План выполнения ниже. Вы можете использовать "OPTION (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX)", когда вы запускаете запрос для сравнения
http://uploadimage.ro/img.php?image=4508_execution_plan_sk6y.png