-1

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

G B
  • 1,412
  • 10
  • 12
jai
  • 582
  • 1
  • 6
  • 20

1 Answers1

1

Use INNER JOIN.

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 
        INNER JOIN @LevelList AS B 
        ON a.[Badge No] = B.BadgeNo
select @RetCountValueOUT
Saravana Kumar
  • 3,669
  • 5
  • 15
  • 35