【发布时间】:2020-12-25 05:57:38
【问题描述】:
假设我有
CREATE FUNCTION [sec].[PartyGroupAccessPredicate](@PartyGroupId uniqueidentifier)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS accessResult
FROM [sec].[PartyGroupPartyLink] partyGroupLink
WHERE
(
partyGroupLink.PartyGroupId = @PartyGroupId AND partyGroupLink.PartyId = CAST(SESSION_CONTEXT(N'PartyId') AS VARCHAR(50))
AND @PartyGroupId IS NOT NULL
)
GO
CREATE SECURITY POLICY [sec].[PartyGroupAccessPolicy]
ADD FILTER PREDICATE [sec].[PartyGroupAccessPredicate]([PartyGroupId]) ON [int].[Program]
... 是否会为每一行执行安全策略,或者 sql 是否会在仅执行一次的情况下进行一些优化?
有没有更好的方法可以提高性能?
【问题讨论】:
-
如果我必须下注,我会认为它每行执行一次。如果是这样,内存优化表可能会有所帮助,如果您可以使用的话。
标签: sql sql-server row-level-security security-policy