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

Откуда: Minsk Power Station
Сообщений: 505
Добрый день!
Подскажите пожалуйста, что будет более производительнее, если стоит следующая задача:
На сайте нужно заполнить 3 списка значениями (длина, ширина, высота).
Есть таблица с сущностями, для которых прописаны габариты. Примерно, 200к. Уникальных значений в габаритах, 50-100.
Как работает сейчас:
Длинна = select distinct lenght from t
Ширина = select distinct width from t
Высота = = select distinct height from t

или же, лучше хранить уникальные значения в отдельной таблице? tDimesions(caption, value) и брать с этой таблицы. Может так выгоднее будет, в смысле, менее ресурсозатратнее для сервера?
4 авг 19, 15:55    [21941583]     Ответить | Цитировать Сообщить модератору
 Re: Делать ли select distinct или создать отдельную таблицу?  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 505
Ну или, т.к. значения габаритов редко меняются, может можно запросы кешировать как-то? А обновлять их лишь тогда, когда действительно попадает(или удаляется) новое значение габарита.
4 авг 19, 15:58    [21941584]     Ответить | Цитировать Сообщить модератору
 Re: Делать ли select distinct или создать отдельную таблицу?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36905
В отдельной таблице.
4 авг 19, 17:09    [21941605]     Ответить | Цитировать Сообщить модератору
 Re: Делать ли select distinct или создать отдельную таблицу?  [new]
SERG1257
Member

Откуда:
Сообщений: 2726
копайте в сторону индексированных вьюх (с их ограничениями)
https://docs.microsoft.com/en-us/sql/relational-databases/views/create-indexed-views?view=sql-server-2017

только вместо дистинкт будет group by
create view lenght_view with schemabinding as
select lenght,COUNT_BIG(*) from t group by lenght
4 авг 19, 18:39    [21941660]     Ответить | Цитировать Сообщить модератору
 Re: Делать ли select distinct или создать отдельную таблицу?  [new]
vikkiv
Member

Откуда: London
Сообщений: 2697
SERG1257,

зачем там любой count ?
просто group by разве не вполне достаточно и без функции агрегации?
4 авг 19, 19:33    [21941681]     Ответить | Цитировать Сообщить модератору
 Re: Делать ли select distinct или создать отдельную таблицу?  [new]
SERG1257
Member

Откуда:
Сообщений: 2726
vikkiv
зачем там любой count ?
Чтобы был. Из ссылки выше

If GROUP BY is present, the VIEW definition must contain COUNT_BIG(*) and must not contain HAVING. These GROUP BY restrictions are applicable only to the indexed view definition. A query can use an indexed view in its execution plan even if it does not satisfy these GROUP BY restrictions.
4 авг 19, 19:37    [21941682]     Ответить | Цитировать Сообщить модератору
 Re: Делать ли select distinct или создать отдельную таблицу?  [new]
vikkiv
Member

Откуда: London
Сообщений: 2697
SERG1257,

да, точно, Картинка с другого сайта. index без него не создаётся..
4 авг 19, 19:45    [21941686]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить