left join'de subquery (nerde firebird'cüler?)
- sahinemrah44
- Üye
- Mesajlar: 13
- Kayıt: 21 Nis 2004 10:42
- Konum: Malatya
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.
anladım
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.
çü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.
- sahinemrah44
- Üye
- Mesajlar: 13
- Kayıt: 21 Nis 2004 10:42
- Konum: Malatya
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: gibi.
İyi çalışmalar.
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
İyi çalışmalar.
şu fb2 de bi çıksa
ş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.
bu arada evet arkadaşın coalesce'yi kullandığı yer benim de dikkatimi çekmişti ama konu dışı diye uzatmamıştım.