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
temp table
Re: temp table
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?
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
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: temp table
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.
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.
Re: temp table
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
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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!