MS SQL - запрос
'or' - вообще очень сложная вещь для оптимищации...
А план запросов есть?
для всех 3-х случаев давай
SELECT * FROM SV_PatientStatus PStпопробуй выполнить это так:
WHERE --проверка разрешений
(dbo.f_CheckUserRights('A_VIEW_PATIENT_CONTACTS') = 1)
OR
(dbo.f_CheckUserRights('A_VIEW_EGGDONOR_CONTACTS') = 1 AND PSt.IsEGGDonor = 1)
SELECT * FROM SV_PatientStatus PSt
WHERE --проверка разрешений
(dbo.f_CheckUserRights('A_VIEW_PATIENT_CONTACTS') = 1)
UNION
SELECT * FROM SV_PatientStatus PSt
WHERE
(dbo.f_CheckUserRights('A_VIEW_EGGDONOR_CONTACTS') = 1 AND PSt.IsEGGDonor = 1)
MS SQL распараллелит выполнение, выполняться будет быстрее.
а самое интересное (для третьего) где?
Так я пробовал - запрос моментом обрабатывается.
а самое интересное (для третьего) где?Третий пост сверху.
Оставить комментарий
Slavaga
Почему вот такой запрос выполняется <1 сек:Вот такой запрос выполняется <1 сек:
А вот такой запрос выполняется >40 сек:
SV_PatientStatus - представление