Skip to main content
3 of 5
added 74 characters in body
AA.SC
  • 4.1k
  • 4
  • 27
  • 44

Sub Query vs Table Filter

I have have been assigned to resolve Performance issue of a Stored Procedure.

Select TableTwo.Column1, DatabaseTwo..TableThree.Column2, Sum(TableTwo.Column3) As Column3  
     --- Section 1
    from TableOne  
    inner join TableTwo on TableOne.Column4 = TableTwo.Column4 
    inner join DatabaseTwo..TableThree on TableTwo.Column1 = DatabaseTwo..TableThree.Column5  
    inner join TableFour on TableOne.Column6 = TableFour.Column6  
    inner join TableFive on TableFour.Column7 = TableFive.Column7  
    inner join TableSix on TableFour.Column8 = TableSix.Column8  
    inner join TableSeven on TableSeven.Column7 = TableFive.Column7  
    inner join TableEight on TableOne.Column9 = TableEight.Column9  
    inner join TableNine on TableFour.Column10 = TableNine.Column10  
    inner join TableTen on TableFive.Column11 = TableTen.Column11   
    inner join TableEleven on TableFive.Column12 = TableEleven.Column12   
    inner join TableTwelve on TableTwelve.Column7 = TableFive.Column7 and TableTwelve.Column9 = TableOne.Column9   
    inner join TableThirteen on TableThirteen.Column13 = TableFour.Column13   
    inner join TableSeventeen on TableSeventeen.Column14 = TableOne.Column14   
    where TableFive.Column15 = 3
    
     
    --- Section 2
    and TableOne.Column6 in  (Select TableOne.Column6 
                                from TableOne, TableTwo, TableFour  
                                Where TableOne.Column4 = TableTwo.Column4 
                                and TableOne.Column6 = TableFour.Column6 
                                and TableFour.Column16 >= @StartDate 
                                and TableFour.Column16< @EndDate )  
                                
                                
    --- Section 3                       
    and TableFour.Column6 In (Select TableFour.Column6 
                                from TableFour,TableEightteen,TableNineTeen 
                                Where TableFour.Column7 = TableNineTeen.Column7 
                                and TableEightteen.Column17 = TableNineTeen.Column17 
                                and TableFour.Column10 = TableNineTeen.Column10 
                                and TableEightteen.Column18 > TableFour.Column16
                                )  
                                
    
    --- Section 4
    and TableFour.Column7 Not In (SELECT Column7 
                                FROM TableFour 
                                GROUP BY Column7, Column10 
                                HAVING ( COUNT(Column7) > 1 ) 
                                and Column7 = TableFour.Column7 
                                and Column10 = TableFour.Column10
                                )  
                                
    
    --- Section 5                           
    and TableOne.Column6 in (Select TableOne.Column6 
                                 from TableOne, TableTwo, TableFour , TableFive 
                                 Where TableOne.Column4 = TableTwo.Column4 
                                 and TableOne.Column6 = TableFour.Column6 
                                 and TableFive.Column7 = TableFour.Column7 
                                 and TableFive.Column12=@Column12
                                 )                  
                                        
    Group By TableTwo.Column1, DatabaseTwo..TableThree.[Column2]  
    Order By  TableTwo.Column1, DatabaseTwo..TableThree.[Column2]

My Question is as per my understanding

  1. Since Section2 has all tables that Section1 has with same join conditions therefore filtering condition and TableFour.Column16 >= @StartDate and TableFour.Column16< @EndDate of section2 should to transferred to Section1 and this will result in same query.

  2. Same scenario is with section6 which has all tables that Section1 but with one extra filter statement and TableFive.Column12=@Column12

and by removing section2 and section6 we can avoid extra conditions

AA.SC
  • 4.1k
  • 4
  • 27
  • 44