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 this result in same query. AM I right?

 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