Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ускорение count(*) и group_by  [new]
Albatross
Member

Откуда:
Сообщений: 998
Добрый день.
Общий вопрос, как лучше делать в таких случаях - есть таблица с кучей записей (несколько миллионов), нужно вывести запрос

select col1, count(*) from tb group by col1.

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

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

MS SQL Server 2008 R2.
28 май 15, 11:29    [17700314]     Ответить | Цитировать Сообщить модератору
 Re: ускорение count(*) и group_by  [new]
Glory
Member

Откуда:
Сообщений: 104760
Albatross
Какой индекс лучше всего создавать, чтобы запрос выполнялся быстро? Или это вообще невозможно?

Создать индексированное представление на основе этого запроса
28 май 15, 11:31    [17700327]     Ответить | Цитировать Сообщить модератору
 Re: ускорение count(*) и group_by  [new]
Albatross
Member

Откуда:
Сообщений: 998
Glory,
Подскажите, пожалуйста.
Вот представление, например, я создал с этим запросом.
Все как полагается, привязано к схеме, COUNT_BIG.
И какой индекс на этом представлении мне нужно создать для ускорения?
3 июн 15, 14:48    [17725670]     Ответить | Цитировать Сообщить модератору
 Re: ускорение count(*) и group_by  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
Albatross
Glory,
Подскажите, пожалуйста.
Вот представление, например, я создал с этим запросом.
Все как полагается, привязано к схеме, COUNT_BIG.
И какой индекс на этом представлении мне нужно создать для ускорения?
Кластерный на col1
3 июн 15, 15:04    [17725818]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить