| From: | "Adnan DURSUN" <a_dursun(at)hotmail(dot)com> | 
|---|---|
| To: | <pgsql-performance(at)postgresql(dot)org> | 
| Subject: | SQL Function Performance | 
| Date: | 2006-02-12 20:25:28 | 
| Message-ID: | BAY106-DAV73D3202A09EC68044469AFA040@phx.gbl | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | 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
     
             
     
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Markus Schaber | 2006-02-12 21:04:18 | Re: 10+hrs vs 15min because of just one index | 
| Previous Message | Aaron Turner | 2006-02-12 19:33:57 | Re: 10+hrs vs 15min because of just one index |