SQL Query

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
beyuslu
Üye
Mesajlar: 46
Kayıt: 20 Nis 2009 11:08

SQL Query

Mesaj gönderen beyuslu »

Merhaba;

SQL de yaklasık 100 bin ile 200 bin arası kaydım var. formda filtre yaparken (query) inanılmaz bir donma var. yani kayıtlar 10 saniye icerisinde geliyor. Dolayısıylada bu 10 saniyelik dilim içerisinde form donuyor . Bu problemi nasıl giderebilirim? daha hızlı veri çektirmenin veya filtre yapmanın bir yolu varmı?

kolay gelsin
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

Re: SQL Query

Mesaj gönderen zengin »

s.a

Degerli arkadaşım 200 bin kayıttta oldukca cok tabiki filtrelemeyi Nasıl yapıyorsunuz ?
birde filtreleme yaparken bilgisayar acaba bellek ne kadarını kullanıyor
bu konuda bil bilgi verirseniz dahada aydınlatıcı olur
Zengin
beyuslu
Üye
Mesajlar: 46
Kayıt: 20 Nis 2009 11:08

Re: SQL Query

Mesaj gönderen beyuslu »

Cevabın İçin teşekkürler...

q.sql.text:='select * from db where kodu=:1';
q.parameters[0].value:=değer;

gibi düşünebilirsin...
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

Re: SQL Query

Mesaj gönderen zengin »

s.a

üstadım birden fazla kritere göre arama yapıyorsan 200 bin kayıt icinde Mutlaka arama yaptıgın alanın birinde hata vardır ?
Zengin
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: SQL Query

Mesaj gönderen mrmarman »

AĞ altından başka bir sunucu bilgisayara erişim söz konusu ise ve hatta bu ağ Wifi bir ağ ise ilk sorguda bekleme kaçınılmazdır. Takip eden sorgularda ise gelen verinin kayıt ve çekilen alan sayısına göre yoğunluğu belirleyici olur.

Localdeki bir veritabanından sorguda yavaşlık varsa sorgunuz kadar bu sorguyu aktardığınız yerde afterscroll benzeri her kayıtta yinelenen procedur'lerde hesaplama / karşılaştırma vb. yapılıyorsa bunların da revize edilmesi, mümkünse bu karşılaştırmaların SQL sorgusu içinde yapılmasında fayda vardır. Tabi mümkünse sorgudan sonra ilgili kayıt seçildiğinde sadece seçilem kayıtta bu karşılaştırmaları yapmak performansı çok çok arttıracaktır.

Detaylara göre çözümler genişletilebilir. Elimizdeki verilere göre bu kadarını yazabiliriz.

başarılar.
Resim
Resim ....Resim
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: SQL Query

Mesaj gönderen freeman35 »

"select *" kullanmaktan vazgeçin
".value" değil asinteger asstring kullanın
table a db de filtre uygulanacak alanlar index verin, null girişleri mümkün olduğunca izin vermeyin default değer verin.
SQL sonuçlarına order kullanmaya çalışın
10 saniye dönen sonucun yukarıda ki yazan arkadaşlara ilave olarak grid ne kullanıyorsun? cxgrid ise default değerleri doğrultusunda sql sonucunda dönen tüm sonuçları okur buda zaman kaybına sebep olur
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 !!!
beyuslu
Üye
Mesajlar: 46
Kayıt: 20 Nis 2009 11:08

Re: SQL Query

Mesaj gönderen beyuslu »

Merhaba;

Cevap veren arkadaşlara teşekkürlerimi sunarım....

- Kullandıgım Grid Cxgrid..
- Select * ifadesini örnek vermemin sebebi tüm kayıtlar kullanıcıya listeleniyor.. Sonra kullanıcı ilgili kaydı filtre yapıyor.. en son o kayıta düzeltme silem vs işlmeler yapıyor...

yaptıgım uygulamalar-

Stored procedure de tanımlamalar yaptım.. Performans değişmedi (gibi);
Sorguları Thread içerisine aldım..Performans Değişmedi (gibi).

Bunlar Haricinde varmı bir çözümünüz?

Teşekkürler.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: SQL Query

Mesaj gönderen emin_as »

Cxgrid in datacontrollerindaki gridmode u true yap.
Cxgrid filtreleme ve gruplama için tüm bilgileri veritabanından çeker, bu şekilde farkında olmadan 200.000 kaydı indiriyorsun.
Cevapla