Индекс столбца по сравнению с обычным индексом

У меня есть несколько таблиц, в двух из которых около 1 миллиона записей. Я использую эти таблицы в одной процедуре, и на выборку 25 000 строк уходит около 5-10 минут.

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

Итак, я попытался создать индекс колоночного хранилища, но все еще без улучшений.

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


person Sreepathi    schedule 06.08.2015    source источник
comment
Что вы имеете в виду производить? Что делает хранимая процедура (выбор / вставка)? Каков план выполнения? 5 минут будут длинным временем для 5 миллионов строк, а не 25 КБ. Создание индекса columnstore не ускорит работу хранимой процедуры, если она обрабатывает, например, каждую строку одну за другой в цикле или курсоре.   -  person Panagiotis Kanavos    schedule 06.08.2015
comment
Проще говоря, без подсказок помочь невозможно. Вам нужно как минимум опубликовать код хранимой процедуры и план выполнения.   -  person Panagiotis Kanavos    schedule 06.08.2015
comment
У процедуры нет цикла или курсора. В нем есть только операторы вставки и выбора. Есть проблема с размещением запроса или плана выполнения. Я постараюсь опубликовать план выполнения после обсуждения с менеджером.   -  person Sreepathi    schedule 06.08.2015
comment
Есть ли у вас аналогичные уровни производительности с другими аналогичными запросами к таблицам аналогичного размера? Если это так, возможно, у вас просто ограничены ресурсы, возможно, на уровне хранилища и, возможно, даже памяти. По мере того, как вы выясняете, можете ли вы поделиться более подробной информацией о своем запросе и плане выполнения, изучите доступные и потребляемые ресурсы для этого экземпляра SQL Server.   -  person SQLmojoe    schedule 06.08.2015


Ответы (1)


Является ли индекс columnstore хорошей идеей, зависит от цели таблицы / базы данных. Columnstore предназначен для использования в больших таблицах фактов в хранилищах данных. Он не предназначен для OLTP или любой другой оперативной базы данных. Если вы работаете с хранилищем данных, кластеризованное хранилище столбцов обычно является хорошей идеей, хотя я думаю, что оно рассчитано более чем на миллион буксировок, но я предполагаю, что оно по-прежнему работает нормально, и вы также должны получить преимущества от улучшенного сжатия.

Для OLTP или смешанного использования вы, вероятно, захотите просто сосредоточиться на индексировании. Посмотрите на план запроса и statistics io вывод, чтобы увидеть, что вызывает медлительность, и если вы не выясните, что может быть не так, либо отредактируйте сообщение, либо попросите новый с подробностями о ваших таблицах, индексах и плане запроса.

Типичные вещи, которые нужно искать в плане запроса, - это сканирование индекса, сортировка и поиск ключей для большого количества строк. Поскольку вы работаете с миллионами строк, также могут быть катушки или утечки во временную базу данных, которые вызывают медлительность.

person James Z    schedule 08.08.2015