Re: Cursor ve Subselect yada Join...

From: Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr>
To: Timu EREN <selamtux(at)gmail(dot)com>
Cc: pgsql-tr-genel(at)postgresql(dot)org
Subject: Re: Cursor ve Subselect yada Join...
Date: 2006-09-07 07:07:38
Message-ID: 20060907070738.GA1396@alamut
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel

On Sep 07 02:47, Timu EREN wrote:
> Sorgunun tamamını henüz hazırlamadım. Aslında sorun tam olarak
> 06-09-2006 18:19 tarihinde söylemiş olduğun gibi aynı sorguyu iki farklı
> subselect yada join ile iki defa execute etmektense tek bir defa execute edip
> sonucu X+n kadar sorgu içerisine hem join hemde subselect içerisinde
> kullanılıp kullanılamayacağını veya nasıl kullanılabilineceğini öğrenmek idi.

Yazdıklarınızı düşündüm de... TEMPORARY TABLE sizin için ideal
gözüküyor. (İlk seferde okunan veriyi TEMPORARY TABLE'a atın, sonra bu
tabloyu diğer sorgulara paşa paşa JOIN edin. Unutmadan, veriniz
yeterince küçükse, TEMPORARY TABLE'lar bellekte saklanır.)

> Sorguyu psql komut aracı ile denediğimde 29 günden daha geriye
> gidildiğinde index yerine seq scan yaptığını gördüm ve 2 aylık süre
> için bir subselect yaptığımda 15 sn. den fazla süre alıyor. (index
> kullanmasına zorlayıp denemedim) ve aklıma bir cursor oluşturup veriyi
> bu cursorde tutarak (sorgunun bir kez çalıştırılması amacı ile) iki
> ayı işlem için kullanabileceğimi düşündüm. (subselect içerisinde) ama
> şu an aklıma gelen bir başka yolda record içerisine koyup ardından
> oluşan görüntü üzerinde işlem yapmak olabilir

Bu söylediklerinizin hepsi çok havada kalıyor. EXPLAIN ANALYZE
çıktılarını görmeden bir şey demek karanlığa taş atmaktan farksız
olacaktır.

> (elbette bu durumda FUNCTION tanımlamak zorunda kalacağım ancak asıl
> amacım bunu FUNCTION kullanmadan yapabilmek idi)

Görünüşe bakılırsa sorguların sonucu her seferinde değişiyor ve bu da bu
işi eğer prosedür ile yaparsanız prosedürün VOLATILE olmasını
gerektirecek. Ve VOLATILE bir işlem de INDEX'lenemediği gibi optimizer
tarafında da gerekli iyileştirme işlemlerine tabi tutulamaz. Demek
istediğim: Prosedür kullanmayın.

İyi çalışmalar.

In response to

Responses

Browse pgsql-tr-genel by date

  From Date Subject
Next Message Adnan DURSUN 2006-09-07 13:30:16 Re: Cursor ve Subselect yada Join...
Previous Message Tom Lane 2006-09-07 04:36:32 Re: BUG #1931: ILIKE and LIKE fails on Turkish locale