Hi,
I have a query used for paging that is running very fast in 0 seconds (records returned are 2000 // param char_field2='26752'),
but slow more than 12 seconds when changed param (records returned 95 //param char_field2='27622') just replaced the param char_field2='26752' to char_field2='27622', all else are identical. I checked the executions plans they are different.
Would any one pls. explain this although first query returns more records?
first query
select * from ( select docno from (select top 15 docno from FINANCE_MAIN m where CHAR_FIELD2='26752' AND CHAR_FIELD3='89715' AND CHAR_FIELD4='89716' AND CHAR_FIELD6='16000' AND CHAR_FIELD7='16003' Order by docno desc) as t1 where not exists ( select * from (select top 0 docno from FINANCE_MAIN m where CHAR_FIELD2='26752' AND CHAR_FIELD3='89715' AND CHAR_FIELD4='89716' AND CHAR_FIELD6='16000' AND CHAR_FIELD7='16003' Order by docno desc) as t2 where t1.docno=t2.docno )) as t3 inner join( select top 10000000 INDOCNO,CHAR_FIELD2,CHAR_FIELD3_AR,CHAR_FIELD1_AR,CHAR_FIELD4_AR,convert(nvarchar,FORWARD_DATE,103) as FORWARD_DATE,SUBJECT,COALESCE(DC2.parent_DOCNO,DC1.parent_DOCNO) AS ISLINKED,att.docno as attach,m.docno as docno,m.confid_id as confid,f.docname ,CHAR_FIELD3 from FINANCE_MAIN m left outer join (select top 1000000 max(cast (parent_docno as int) ) as parent_docno from oaefile_doclinks group by parent_docno order by parent_docno desc) as DC1 on m.docno=dc1.parent_docno LEFT OUTER JOIN OAEFILE_DOCLINKS DC2 ON m.DOCNO=DC2.CHILD_DOCNO LEFT OUTER JOIN (select top 1000000 cast (t.docno as int) as docno,min(f.docid) as attach_docno from dmsdocinfo f inner join FINANCE_ATTACH t on f.docid=t.attach_docno group by docno order by docno desc) as att on m.docno=att.docno left outer join dmsdocinfo f on att.attach_docno=f.docid where CHAR_FIELD2='26752' AND CHAR_FIELD3='89715' AND CHAR_FIELD4='89716' AND CHAR_FIELD6='16000' AND CHAR_FIELD7='16003' Order by docno desc ) as t4 on t3.docno=t4.docno order by t3.docno desc
second query
select * from ( select docno from (select top 15 docno from FINANCE_MAIN m where CHAR_FIELD2='27622' AND CHAR_FIELD3='89715' AND CHAR_FIELD4='89716' AND CHAR_FIELD6='16000' AND CHAR_FIELD7='16003' Order by docno desc) as t1 where not exists ( select * from (select top 0 docno from FINANCE_MAIN m where CHAR_FIELD2='27622' AND CHAR_FIELD3='89715' AND CHAR_FIELD4='89716' AND CHAR_FIELD6='16000' AND CHAR_FIELD7='16003' Order by docno desc) as t2 where t1.docno=t2.docno )) as t3 inner join( select top 10000000 INDOCNO,CHAR_FIELD2,CHAR_FIELD3_AR,CHAR_FIELD1_AR,CHAR_FIELD4_AR,convert(nvarchar,FORWARD_DATE,103) as FORWARD_DATE,SUBJECT,COALESCE(DC2.parent_DOCNO,DC1.parent_DOCNO) AS ISLINKED,att.docno as attach,m.docno as docno,m.confid_id as confid,f.docname ,CHAR_FIELD3 from FINANCE_MAIN m left outer join (select top 1000000 max(cast (parent_docno as int) ) as parent_docno from oaefile_doclinks group by parent_docno order by parent_docno desc) as DC1 on m.docno=dc1.parent_docno LEFT OUTER JOIN OAEFILE_DOCLINKS DC2 ON m.DOCNO=DC2.CHILD_DOCNO LEFT OUTER JOIN (select top 1000000 cast (t.docno as int) as docno,min(f.docid) as attach_docno from dmsdocinfo f inner join FINANCE_ATTACH t on f.docid=t.attach_docno group by docno order by docno desc) as att on m.docno=att.docno left outer join dmsdocinfo f on att.attach_docno=f.docid where CHAR_FIELD2='27622' AND CHAR_FIELD3='89715' AND CHAR_FIELD4='89716' AND CHAR_FIELD6='16000' AND CHAR_FIELD7='16003' Order by docno desc ) as t4 on t3.docno=t4.docno order by t3.docno desc
Thank you