temp table

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
edoyuko
Üye
Mesajlar: 24
Kayıt: 28 Ara 2006 01:29

temp table

Mesaj gönderen edoyuko »

s.a. arkadaşlar,
6.000 adet kart ve 300.000 adet hareket tablosu var.bu kartlardan sadece istenenler için hareket tablosundan rapor alınacak.
1.sorgu : select kod from kart where kod>='xxxx' and kod<='zzzzz'
2.sorgu : select sum(tutar) from hareket where hareket.kod in(1.sorgu)

bu çok yavaş olduğundan 1.sorguda dönen kayıtları geçici olarak nasıl saklayıp 2.sorgu içinde kullanabilirim.

aslında 2.sorgu bu kadar sade değil, içinde like kullanıyorum.eğer 1.sorguda dönen kayıtları 2.sorguda string olarak
kullandığımda ( in('100','101) gibi) girdiğimde problem olmuyor ama sorgu olarak koyduğumda rapor çakılıyor.1.sorgudan ne kadar kayıt döneceği isteğe bağlu olduğundan string olarak olmaz sanırım.ilk sorguyu view olarakta yaptım.view i 2.sorguda kullandım yine çakılıyor.firb bird'e temp table yok sanırım.ne yapabilirim?

saygılarımla
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: temp table

Mesaj gönderen aslangeri »

s.a.
stored procedure ile yapılabilir.
iç içe iki for döngüsü yaparsın.
kayıt sayısına göre yavaşlık olabilir ama verdiğiniz kayıt sayıları çok fazla değil.
indeksleriniz de bir sıkıntı yok değilmi?
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: temp table

Mesaj gönderen emin_as »

1. sorgu: select kod from kart where kod>='xxxx' and kod<='zzzzz'
2.sorgu : select sum(tutar) from hareket where hareket.kod in(1.sorgu)

Şöyle de deneyebilirsin

select hareket.kod,sum(tutar) from hareket h, kart k
where k.kod=h.kod and k.kod between 'xxxxx' and 'zzzzz'
group by 1

Bu tek sorgu işini görebilir.
kart ve hareketteki kodlara göre join yaptığını varsaydım. Kodlara göre de gruplandırdım.
Kart taki kod ve hareketteki kod mutlaka indekslenmiş olmalıdır.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: temp table

Mesaj gönderen freeman35 »

2.tablonda rapor istenirken tarih vs gibi başka değişken kriter yoksa, 1tablona 1 field ekleyip Insert, Update birde afterdelete trigger larıyla 1.tablona her kayıtta sum ları ekletirsen, stok table ını her açtığında envanter son durumunu işlem yaptırtmadan kullanıcı stoğu seçerken depoda nekadar var performans kaybetmeden görebilir

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla