** Привет. Любой может помочь повысить производительность ниже SQL-запроса: ** Может кто-нибудь помочь мне улучшить этот запрос. Это занимает 22 второй раз. Как я могу улучшить? Получен ожидаемый результат, но производительность слишком низкая
** Проблема ниже запроса, это занимает слишком много времени: - ** без запроса ниже, это занимает 2 или 3 секунды, но этот запрос ниже. Может кто-нибудь помочь мне убрать в закрытии?
Нужно улучшить ниже код
CASE
When ac.accountID=@accountadministratorID Then @siteadmin
When @ssrstandarduser in (Select roleID from TB_ROLE where roleID in (Select roleID from TB_USERASSIGN where userAccountID in
(Select userAccountID from TB_USERACCOUNT where userID =us.userID)) and accountID=ac.accountID) then 'Y'
ELSE 'N'
END AS [SSR Standard User],
Whole SQL Query Below:-
DECLARE @saiportal varchar(15) = 'ABC Portal',
@aceoandcbasaig varchar(15) = 'NonHuman',
@imshuman varchar(15) = 'Human',
@siteadmin varchar(15) = 'Admin',
@ssruser varchar(15) = 'PUser',
@standarduser varchar(15) = 'RUser',
@accountadministratorID int =2015039,
@ssrstandarduser int = 540502,
@ssraccessfeatureid int =15,
@userStatusTrue varchar(15)= 'TRUE',
@userStatusFalse varchar(15) = 'False',
@imsNonHuman varchar(15) = 'PCOE%',
@imsNonHumans varchar(15) = 'CBder%',
@commSiteId int = 54
select distinct base.[Endpoint],base.[Account Name],base.[Account Disabled],base.[EmployeeID],base.[Email],base.[LANID],base.[Given Name],base.[Surname],base.[Last Logon Date],
base.[Created Date],base.[Last Password Changed],base.[Account Description],base.[Super Type],base.[Sub Type],
CASE
When base.[SSR ACCESS] = @siteadmin then @siteadmin
When base.[SSR ACCESS] = 'Y' and base.[SSR Standard User]='Y' then 'SSR User'
Else 'Standard User'
END
as [Relationship Based Entitlement value],
base.[Value-based Entitlement]
from (
Select DISTINCT(@saiportal) as [Endpoint],
us.userName as [Account Name],
CASE
when us.userStatusID IN(1,2) then @userStatusTrue
ELSE @userStatusFalse
END AS [Account Disabled],
'' as [EmployeeID],
con.emailAddress as [Email],
'' as [LANID],
con.givenNames as [Given Name],
con.surname as [Surname],
CONVERT(varchar,us.LoginDate,105) as [Last Logon Date],
CONVERT(varchar,us.createdDT,105) as [Created Date],
CONVERT(varchar,cmu.passwordChangeDT,105) as [Last Password Changed],
ac.accountName as [Account Description],
CASE
when us.userName in (@imsNonHuman,@imsNonHumans) then @aceoandcbasaig
ELSE @imshuman
END AS [Super Type],
'' as [Sub Type],
CASE
When ac.accountID=@accountadministratorID Then @siteadmin
When
af.featureID=@ssraccessfeatureid then 'Y'
ELSE 'N'
END AS [SSR ACCESS],
af.featureID,
CASE
When ac.accountID=@accountadministratorID Then @siteadmin
When @ssrstandarduser in (Select roleID from TB_ROLE where roleID in (Select roleID from TB_USERASSIGN where userAccountID in
(Select userAccountID from TB_USERACCOUNT where userID =us.userID)) and accountID=ac.accountID) then 'Y'
ELSE 'N'
END AS [SSR Standard User],
'' as [Value-based Entitlement]
from TB_USER us inner join TB_ACCOUNT ac on ac.accountID=us.primaryAccountID
inner join TB_USERSTATUS uss on uss.userStatusID=us.userStatusID
Inner join TB_CONTACT con on con.contactID=us.contactID
Inner join TB_CSMUSER cmu on cmu.userID=us.userID
inner join TB_USERACCOUNT ua on ua.userID=us.userID
inner join TB_USERASSIGN uas on uas.userAccountID=ua.userAccountID
left join TB_ACCOUNTFEATURE af on af.accountID= ac.accountID and af.featureID= @ssraccessfeatureid
where siteID = @commSiteId and us.userStatusID in (1,2,3))base