left join'de subquery (nerde firebird'cüler?)

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
sahinemrah44
Üye
Mesajlar: 13
Kayıt: 21 Nis 2004 10:42
Konum: Malatya

Mesaj gönderen sahinemrah44 »

evet hepsine index oluşturdum zaten 10-12 saniye idare eder fakat kapanması çok uzun sürüyor hatta şöyle bir denemede yaptım sorguyu çalıştırıp ekran kayıtlar geldikten sonra son kayıtta git diyincede uzun sürüyor tahminimce 10-12 saniyede sadece benim görebileceğim kayıtları hesaplıyor ve ekrana gönderiyor ama arkaplanda halen hesaplamalar sürüyor gibi.son kayıt diyincede 1-2 dakika bekliyor ama son kayıtta gidince kapatınca hemen kapatıyor.tablolar biraz büyük 4 tabloyu birleştiriyorum sırasıyla 3.000,250.000,155.000,95.000 kayıt var.durum böyleee tek başlarına tabloları sorguladığımda çok hızlı 3-4 saniye sonuçlar dönüyor ve kapatıncada sorun çıkmıyor.birşetirince böyle oluyor.
iqprog

anladım

Mesaj gönderen iqprog »

anladım demek ki subqueryi view olarak yazmak da para etmiyor.

çünkü viewlerde indeks kavramı yok. oluşturduğumuz view sonucu oluşan sanal tablo, indekssiz bir tablo ve bunu başka bir tablo ile join yapmak tablolardan biri indekssiz olduğu için çok yavaş oluyor.

sonuçta fb

select * from a, (select * from b) b
where a..=b..

formatında bir sqli desteklemediği sürece bu iş yavaş olacak.
Kullanıcı avatarı
sahinemrah44
Üye
Mesajlar: 13
Kayıt: 21 Nis 2004 10:42
Konum: Malatya

Mesaj gönderen sahinemrah44 »

belki faklı bir şekilde daha hızlı çalışabilir şimdi ben böyle kullanıyorum mecburen ama çok uğraştım en hızlısı yine bu bunada şükür.bakalım zaman bulabilirsen biraz daha kurcalıyacağım.
İyi çalışmalar.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

FireBird 2.0 Sub Select Query'lerini destekliyor.

Ayrıca yaptığınız testleri COALESCE'yi kullanmadan yaparsanız (eğer gerekmiyorsa) performans çok daha artacaktır. Ama illa kullanacaksanız COALESCE'yi SUM ve COUNT fonksiyonlarının içinde kullanın. (Zira gruplama yaparken dışında kullanmanın gereği yok). Yani:

Kod: Tümünü seç

Select FIRMA_KODU, SUM(COALESCE(TUTAR, 0)) FROM TABLOADI
gibi.

İyi çalışmalar.
iqprog

şu fb2 de bi çıksa

Mesaj gönderen iqprog »

şu fb2 de bi çıksa,

bu arada evet arkadaşın coalesce'yi kullandığı yer benim de dikkatimi çekmişti ama konu dışı diye uzatmamıştım.
Cevapla