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

Откуда:
Сообщений: 329
есть таблица, в которой хранятся некие агрегированные данные, очень много записей (до миллиарда).
create table [MyTable](
    [id] int identity(1,1)
   ,[Param] varchar(50) not null
   ,[Value] varchar(50) not null
   ,[BegTime] datetime not null
   ,[EndTime] datetime not null
   ,[Count] int not null
)
create index [idx_Param] on [MyTable]([Param])
create index [idx_Value] on [MyTable]([Value])


такой запрос отрабатывается очень быстро
select [Count] = count(*) from [MyTable] where [Param] = 'param'


такой гораздо медленнее
select [Value], [Count] = count(*) from [MyTable] where [Param] = 'param' group by [Value]


Однако, в целях повышения эффективности предыдущего запроса, мне не нужно знать, сколько именно строк встречается, достаточно вернуть 1, если их более 10, иначе 0.
Как это эффективно сделать?
1 июн 16, 11:19    [19244615]     Ответить | Цитировать Сообщить модератору
 Re: минимальное количество значений  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Индексированные представления идеальный вариант. Либо покрывающий индекс.

https://habrahabr.ru/post/271797/
1 июн 16, 11:21    [19244628]     Ответить | Цитировать Сообщить модератору
 Re: минимальное количество значений  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
мне не нужно знать, сколько именно строк встречается, достаточно вернуть 1, если их более 10, иначе 0

К слову у Вас ни кластерного индекса нет, ни покрывающего Ваш запрос... оттого и медленно.
1 июн 16, 11:26    [19244662]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить