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

Откуда:
Сообщений: 43
Доброго времени суток.
Есть данные, которые обновляются в 4-х таблицах, не всегда одновременно. Все таблицы содержат описание товаров, то есть таблицы все описывают однотипные товары, но на разных предприятиях, все таблицы имею разное число столбцов, разные типы столбцов и к ним имеется только доступ на селект.

Вопрос, что лучше - сделать одно представление, которое будет в унифицированном виде представлять данные из всех таблиц (то есть просто юнион селект), или же просто каждый квартал (данные в тех четырех таблицах обновляются не чаще раза в 3 месяца) пересоздавать сводную таблицу.

Что будет работать быстрее? Как быть с индексированием, если я захочу индексировать агрегирующее представление, то это потребует индексирование столбцов в исходных таблицах?
21 июн 09, 00:04    [7325000]     Ответить | Цитировать Сообщить модератору
 Re: Представление или сводная таблица?  [new]
iljy
Guest
BorisPlus,

точно можно ответить только на последний вопрос - при индексировании представления индексирование исходных таблиц не требуется. и, насколько я понимаю, создание кластерного индекса на представление - это то же самое (или почти), что создание сводной таблицы, но на индексированные представления есть куча ограничений.
а про остальное - пробуйте.
21 июн 09, 01:54    [7325150]     Ответить | Цитировать Сообщить модератору
 Re: Представление или сводная таблица?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
но на индексированные представления есть куча ограничений.
Напимер, UNION нельзя!
21 июн 09, 10:25    [7325296]     Ответить | Цитировать Сообщить модератору
 Re: Представление или сводная таблица?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
iap
Напимер, UNION нельзя!
Зато UNION запрос (обычное представление) из сводных индексированных представлений моно.
21 июн 09, 11:26    [7325337]     Ответить | Цитировать Сообщить модератору
 Re: Представление или сводная таблица?  [new]
iljy
Guest
Mnior
iap
Напимер, UNION нельзя!
Зато UNION запрос (обычное представление) из сводных индексированных представлений моно.


можно:) и в случае, когда нельзя индексировать исходные таблицы - это в какой-то степени поможет.
но вот из этого: "таблицы все описывают однотипные товары, но на разных предприятиях", - не очень понятно: таблицы на разных предприятиях, т.е. - на разных серверах, или все-таки на одном? И если на одном - почему нельзя индексы создать? Настолько права урезаны?
А что будет быстрее - сильно зависит от запросов, ибо такая конструкция, как UNION по индексированным представлениям, может в принципе давать эффект секционированния:) и если запросы подходящие, индексы представлений грамотно раскиданы - может получится быстрее сводной таблицы. А на сводной таблице дополнительно будет гемор с синхронным обновлением, насколько большой - зависит от. Если нельзя индексы создать - триггеры скорее всего тоже не удастся.
21 июн 09, 12:47    [7325389]     Ответить | Цитировать Сообщить модератору
 Re: Представление или сводная таблица?  [new]
BorisPlus
Member

Откуда:
Сообщений: 43
Либо каждый раз (3-5 раз в год) генерировать сводную таблицу и индексировать ее?
Либо создать представления исходных таблиц и над ними сделать обобщенное представление и его индексировать?

записей около 3000000. Что быстрее (в основном запрсы SELECT LIKE...) - выяснить эмпирически?

Первый вариант требует ежеквартальной перегенерации таблицы и ее переиндексирования.
А второй вроде живет сам собой или нужна будет переиндексация после обновления хоть одной из таблиц?
23 июн 09, 18:07    [7334693]     Ответить | Цитировать Сообщить модератору
 Re: Представление или сводная таблица?  [new]
iljy
Guest
BorisPlus
Либо каждый раз (3-5 раз в год) генерировать сводную таблицу и индексировать ее?
Либо создать представления исходных таблиц и над ними сделать обобщенное представление и его индексировать?

записей около 3000000. Что быстрее (в основном запрсы SELECT LIKE...) - выяснить эмпирически?

Первый вариант требует ежеквартальной перегенерации таблицы и ее переиндексирования.
А второй вроде живет сам собой или нужна будет переиндексация после обновления хоть одной из таблиц?

индексировать обобщенное представление не получится (индексированный представления не допускают UNION), но можно индексировать представление каждой таблицы, а уже потом их объединить в одно. Обновляться в этом случае все будет само.
Запросы SELECT ... LIKE... плохо индексируются, только если LIKE 'text%'. Так что либо сканирование, либо делайте FTS.
23 июн 09, 19:53    [7335033]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить