من این Query رو که مشخص کننده تساوی مبلغ و شماره قبض هستش مینویسم:
SELECT gabzid, mablag,COUNT(*) AS 'TCount' FROM T1
GROUP BY gabzid, mablag
HAVING COUNT(*) % 2 = 0
و حالا Join میکنیم با Query قبلی:
SELECT t1.* FROM t1 JOIN
(SELECT gabzid, mablag,COUNT(*) AS 'TCount' FROM T1
GROUP BY gabzid, mablag
HAVING COUNT(*) % 2 = 0) tmp2
ON t1.gabzid=tmp2.gabzid AND t1.gabzid=tmp2.gabzid
WHERE t1.mablag IN
(SELECT mablag FROM
(SELECT jadval,mablag, Count(*) as [Count] FROM t1
GROUP BY jadval,mablag) tmp
GROUP BY mablag, [count]
HAVING COUNT(*)<>1) order by t1.mablag,t1.jadval,t1.gabzid ;
بعد از اینکه سرعت Query بالا رو چند بار آزمایش کردین، ایندکس زیر رو بسازید و ببینید آیا در سرعتش بهبودی حاصل میشه یا خیر:
CREATE INDEX A_IX1 ON T1(MABLAG,JADVAL,GABZID)