I have the query which is takes more time run. I Find is because of IN operator in the query.I need to optimize it, pls advise
The query is
DECLARE @LevelList TABLE(BadgeNo NVARCHAR(200))
INSERT INTO @LevelList(BadgeNo) EXEC spDataLevelSecurity SIP008548
declare @RetCountValueOUT nvarchar(3)
SELECT @RetCountValueOUT = COUNT([Badge No] ) FROM (
SELECT
Distinct
BC.BadgeNo AS [Badge No],
dbo.ProperCase(FirstName + + ' ' + ISNULL(MiddleName,'') + CASE WHEN ISNULL(MiddleName,'') <> '' THEN ' ' ELSE '' END + ISNULL(LastName,'')) AS [Employee Name],
ISNULL(Job.BusinessUnit,'') AS [Company],
' By ''' + dbo.ProperCase(F1.UserFullName) + ''' On ''' + REPLACE(CONVERT(NVARCHAR(11),CreatedOn,106),' ','-') + '''' AS [Creation Details],
' By ''' + dbo.ProperCase(F2.UserFullName) + ''' On ''' + REPLACE(CONVERT(NVARCHAR(11),VerifiedOn,106),' ','-') + '''' AS [Verification Details]
FROM
Componentdetails BC
INNER JOIN Job
ON Job.BadgeNo = BC.BadgeNo
INNER JOIN Employee
ON Employee.BadgeNo = BC.BadgeNo
LEFT JOIN FalconUsers F1
ON F1.EmployeeID = BC.CreatedBy
LEFT JOIN FalconUsers F2
ON F2.EmployeeID = BC.VerifiedBy
WHERE
Isverified = 1
AND IsApproved = 0
AND RejectTag = 0
)A
where a.[Badge No] in ( Select BadgeNo from @LevelList )
select @RetCountValueOUT
Thanks in advance