powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / План выполнения при использовании View
1 сообщений из 1, страница 1 из 1
План выполнения при использовании View
    #32021412
Alik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

MSSQL7

Имеется большая таблица фактов Base (10 млн. строк) связанная с множеством таблиц справочников (периоды, география, клиенты, ...).
Есть запрос, в котором отбираются данные за определенный период, в определенном регионе и т. д.
План выполнения вполне нормальный: сначала шерстятся справочники, а потом только из большой таблицы по индексам производится отбор и связывание. Время выполнения около 10 секунд.

Теперь усложняем задачу.
Необходимо разграничить пользователям доступ к данным. Например по географическому признаку.
В таблице фактов есть поле RegionId. Также есть таблица Security( UserName, RegionId), в которой для каждого пользователя перечислены регионы, к которым он имеет доступ. Создано представление RegionBase:
SELECT * FROM Base INNER JOIN Security ON Base.RegionId = Security.RegionId WHERE Security.UserName = USER_NAME()
При замене в исходном запросе Base на RegionBase план выполнения меняеться кардинально:
Береться таблица Base и последовательно объединяеться со всеми справочниками. Время выполнения 3 минуты.

Возможно объяснение не достаточно прозрачное, но буду рад всем советам.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / План выполнения при использовании View
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]