Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Need help with monstrous query migrated from sql server
Hi!
I need help with a query conversion from SQL Server to Oracle.
The SQL Server query runs pretty fast, but when converted to run in Oracle it performs poorly. Both versions included below.
Any ideas how to make the Oracle query better?
Thanks in advance!
SQL Server:
SELECT
permnd, peraar, jurenhet, artskonto, 0 as sumbilagbel,
akode,rkode,sum(hboksaldo) as sumhboksaldo,
(select 1 --FROM avstemt a
WHERE not exists ( select D.peraar from Avstemt D where D.permnd = A.permnd AND D.peraar = A.peraar AND upper(D.jurenhet) = upper(A.jurenhet) AND D.artskonto = A.artskonto AND (D.avstemtav is null OR D.avstemtav = '')))as avstemtav,
COUNT(*) as antall,
0 as qaantall,
COUNT(*) as avstemtantall
FROM Avstemt A
WHERE upper(jurenhet) = upper('sy') AND permnd = 'jul' AND peraar = 2004 AND ( NOT EXISTS ( SELECT 1 FROM Bilag B WHERE A.permnd = B.permnd AND A.peraar = B.peraar AND upper(A.jurenhet) = upper(B.jurenhet) AND A.artskonto = B.artskonto AND B.deleted = 'n' AND upper(A.rkode) = upper(B.rkode) AND upper(A.akode) = upper(B.akode) ) )
ORACLE:
/* @(#)C:\AdventNet\SwisSQL\SQLServerToOracle3.0/temp2_PL.sql -
Generated by AdventNet SwisSQL (SQLServer To oracle) Conversion tool.*/
;
SELECT
permnd, peraar, jurenhet, artskonto, 0 as sumbilagbel, akode, rkode, SUM(hboksaldo) as sumhboksaldo,
WHERE NOT exists (SELECT D.peraar FROM Avstemt D WHERE D.permnd = A.permnd AND D.peraar = A.peraar AND UPPER(D.jurenhet) = UPPER(A.jurenhet) AND D.artskonto = A.artskonto AND (D.avstemtav is null OR D.avstemtav = '')))
COUNT(*) as antall, 0 as qaantall, COUNT(*) as avstemtantall FROM Avstemt A WHERE UPPER(jurenhet) = UPPER('sy') AND permnd = 'jul' AND peraar = 2004 AND (NOT EXISTS (SELECT 1 FROM Bilag B WHERE A.permnd = B.permnd AND A.peraar = B.peraar AND UPPER(A.jurenhet) = UPPER(B.jurenhet) AND A.artskonto = B.artskonto AND B.deleted = 'n' AND UPPER(A.rkode) = UPPER(B.rkode) AND UPPER(A.akode) = UPPER(B.akode) )) GROUP BY permnd, peraar, jurenhet, artskonto, rkode, akode
/ Received on Wed Apr 19 2006 - 03:32:59 CDT