|
|
|
Как лучше ?
|
|||
|---|---|---|---|
|
#18+
Есть таблица : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. В системе есть 2 вида отчетов : пользовательские и общие (cоотв. UserDefinedFlag 1/ 0 ) Для пользовательских отчетов idUser IS NOT NULL для общих наоборот. И есть 2 типовых запроса : 1) список отчетов по пользователю . Для него сделан некластерный индекс на idUser 2) любому пользователю доступны общие отчеты . Подскажите как лучше быть : 1) Сделать индексированную вьюху на таблицу с фильтром UserDefinedFlag = 0 2) Сделать индекс UserDefinedFlag и при выборе общих отчетов указать явно хинт - использовать этот индекс. Вставки пользовательских отчетов будут интенсивными . С индексированными вью раньше не использовал , как лучше поступить в такой ситуации ? Может еще как нибудь ? Версия сервера 2005 sp3. Спасибо. Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2009, 21:47 |
|
||
|
Как лучше ?
|
|||
|---|---|---|---|
|
#18+
У вас атрибуты дублируют друг друга, а именно - UserDefinedFlag всегда совпадает с выражением Код: plaintext Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2009, 22:02 |
|
||
|
Как лучше ?
|
|||
|---|---|---|---|
|
#18+
Запрос такого вида приводит к сканированию кластерного индекса, от чего я и хочу избавится : Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2009, 22:37 |
|
||
|
Как лучше ?
|
|||
|---|---|---|---|
|
#18+
А по поводу номализации, понятно что моя таблица не удовлетворяет уже 1 форме , так как описывает две сущности . Целостность решена созданием 2 процедур сохранения отчетов. Интерфейсно они отличаются , а доступ всегда осуществляется только через хранимые процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2009, 22:42 |
|
||
|
Как лучше ?
|
|||
|---|---|---|---|
|
#18+
Леша777А по поводу номализации, понятно что моя таблица не удовлетворяет уже 1 форме Не будьте столь пугливы и не ведитесь на поводу у хулителей. Лучше RTFM. Леша777так как описывает две сущности Сущность одна. Отчет. Остальное - его атрибуты. Леша777приводит к сканированию кластерного индекса, от чего я и хочу избавится Запрос типа isnull(idUser, @UserId)=@UserId всегда можно разложить на union по разным условиям. Тем более что MSSQL, откуда мигрировали Ваш топик, хранит в индексе полностью NULL-овые значения. Впрочем, тут все намного хуже. Решение сунуть idUser в эту таблицу в принципе неверное. Это поле определяет доступность отчета. Соответственно, если ровно 2-м пользователям доступен один отчет, вся Ваша красота накрывается медным тазом. Ваша система неусточива к минимальным высоковероятным изменениям в ТЗ. Соответственно, так делать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2009, 22:57 |
|
||
|
Как лучше ?
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelУ вас атрибуты дублируют друг друга, а именно - UserDefinedFlag всегда совпадает с выражением Код: plaintext Леша777по поводу номализации, понятно что моя таблица не удовлетворяет уже 1 форме , так как описывает две сущности.Непонятно, при чём здесь 1NF . И что за 2 сущности - тоже... Есть подозрение, что не надо преумножать сущностей и строить очередной велосипед. Задача явно напрашивается на решение с использованием стандартного механизма ограничения доступа СУБД. Отчёт регистрируется в таблице отчётов, хотя это не обязательно, можно просто использовать в названии префикс(например, что-то типа "rpt.") и выбирать по нему прямо из списка объектов БД. И на этот объект выделяются(GRANT) права на просмотр по ролям, в том числе иерархически, когда одна роль может быть включена в другую и т.д. И так вплоть до пользователей, буде таковое желание, хотя с таким желанием надо бороться, с ростом кол-ва пользователей контроль за полномочиями будет сильно усложнён. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2009, 12:03 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=85&tid=1543140]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
59ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 358ms |

| 0 / 0 |
