次のようにクエリを最適化しようとしています。
SELECT id, type, parent_id
FROM [dbo].[v5] with(nolock)
WHERE
(
USER_ID() = 1
OR
(
v5.type IN (1,2,3)
and
EXISTS
(
SELECT obj_id FROM dbo.access with(nolock)
where access.obj_id = id
AND obj_id.[u_name] in
(
select SUSER_SNAME() union all
select [name] COLLATE database_default from dbo.u_role
)
)
)
)
25秒で動作します。この行にコメントすると:
--USER_ID() = 1
-- OR
それは5秒で動作します。このクエリを最適化するには? where句でUSER_ID()を使用しないようにするには?