SQL Function Performance - Mailing list pgsql-performance

From Adnan DURSUN
Subject SQL Function Performance
Date
Msg-id BAY106-DAV73D3202A09EC68044469AFA040@phx.gbl
Whole thread Raw
Responses Re: SQL Function Performance
List pgsql-performance
 
            Hi all,
 
            My database has an SQL function. The result comes in 30-40 seconds when i use the SQL function. On the other hand; The result comes
        300-400 milliseconds when i run the SQL statement. Any idea ?? My database is Postgresql 8.1.2..
       
            Function is below :
 
CREATE OR REPLACE FUNCTION fn_online_seferler_satis("varchar", date, int4, "varchar", "varchar")
  RETURNS SETOF record AS
$BODY$
SELECT  (S.KALKIS_YERI||' '||S.VARIS_YERI||' '||S.SAAT)::varchar AS SEFER_BILGI,
 sum((i.bilet_ucreti + coalesce(i.police_ucreti,0)) - coalesce(i.int_artik_ucret,0)) as top_satis,
 count(1)::int4 as top_koltuk
   FROM T_KOLTUK_ISLEM I,
 T_KOLTUK_SON_DURUM SD,
 T_LOKAL_PLAN LP,
 W_SEFERLER S
  WHERE I.FIRMA_NO = SD.FIRMA_NO
    AND I.HAT_NO = SD.HAT_NO
    AND I.SEFER_KOD = SD.SEFER_KOD
    AND I.PLAN_TARIHI = SD.PLAN_TARIHI
    AND I.BIN_YER_KOD = SD.BIN_YER_KOD
    AND I.KOLTUK_NO = SD.KOLTUK_NO
    AND I.KOD = SD.ISLEM_KOD
    AND SD.ISLEM = 'S'
    AND LP.FIRMA_NO = I.FIRMA_NO
    AND LP.HAT_NO = I.HAT_NO
    AND LP.SEFER_KOD = I.SEFER_KOD
    AND LP.PLAN_TARIHI = I.PLAN_TARIHI
    AND LP.YER_KOD = I.BIN_YER_KOD
    AND I.FIRMA_NO = $1
    AND S.FIRMA_NO = LP.FIRMA_NO
    AND S.HAT_NO = LP.HAT_NO
    AND S.KOD = LP.SEFER_KOD
    AND S.IPTAL = 'H'
    AND ((I.ISLEM_TARIHI =  $2 AND $5 = 'I') OR (LP.KALKIS_TARIHI = $2 AND $5 = 'K'))
    AND (((LP.LOKAL_KOD = $3 AND $4 = 'K')) OR  ((I.ypt_lcl_kod = $3 AND $4 = 'I'))) 
GROUP BY S.KALKIS_YERI,S.VARIS_YERI,S.SAAT;
$BODY$
  LANGUAGE 'sql' VOLATILE;
 
Adnan DURSUN
ASRIN Bilişim Ltd.Şti
Turkey
 

pgsql-performance by date:

Previous
From: Aaron Turner
Date:
Subject: Re: 10+hrs vs 15min because of just one index
Next
From: andrew@pillette.com
Date:
Subject: Re: SQL Function Performance