yavaş SQL..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

yavaş SQL..

Mesaj gönderen loxka »

Aşağıdaki gibi bir sorgulama yapıyorum, kayıt sayısı şu an 600 ulaştı, sorgulama sanki biraz yavaş çalışıyor, hızlandırabilirmiyim bilmiyorum. VT paradox. Değerlendirmelerinizi paylaşırsanız sevinirim.

Kod: Tümünü seç

Procedure SorguHazirla( DosyaNo, AdiSoyadi, Yas, Cinsiyet, Tani, Lokalizasyon, Yapilan: String);
begin
DosyaNo := Trim(DosyaNo);
AdiSoyadi := Trim(AdiSoyadi);
Yas := Trim(Yas);
Cinsiyet := Trim(Cinsiyet);
Tani:=Trim(Tani);
Lokalizasyon:=Trim(Lokalizasyon);

Form6.Query1.Active := False;
Form6.Query1.SQL.Clear;
FOrm6.Query1.SQL.Add('Select * from giris');
Form6.Query1.SQL.Add('Where (1=1)');

If DosyaNo <> ''
then Form6.Query1.SQL.Add( 'AND (LOWER(DosyaNo) Like LOWER("%'+DosyaNo+'%" ))' );
If AdiSoyadi <> ''
then Form6.Query1.SQL.Add( 'AND (LOWER(AdiSoyadi) Like LOWER("%'+AdiSoyadi+'%"))' );
If Yas<> ''
then Form6.Query1.SQL.Add( 'AND (LOWER(Yas) Like LOWER("%'+Yas+'%" ))' );
If Cinsiyet<> ''
then Form6.Query1.SQL.Add( 'AND (LOWER(Cinsiyet) Like LOWER("%'+Cinsiyet+'%" ))' );
If Tani<> ''
then Form6.Query1.SQL.Add( 'AND (LOWER(Tani) Like LOWER("%'+Tani+'%" ))' );
If Lokalizasyon<> ''
then Form6.Query1.SQL.Add( 'AND (LOWER(Lokalizasyon) Like LOWER("%'+Lokalizasyon+'%" ))' );
If Yapilan<> ''
then Form6.Query1.SQL.Add( 'AND (LOWER(Yapilan) Like LOWER("%'+Yapilan+'%" ))' );

Form6.Query1.Active := true;
end;

Kod: Tümünü seç

procedure TForm6.Edit1Change(Sender: TObject);
begin
SorguHazirla(Edit1.Text,Edit2.Text,Edit3.Text, Edit4.Text, Edit5.Text, Edit6.Text, Edit7.Text);
Form6.query1.Last;
label8.caption := inttostr(Form6.Query1.recordcount);
end;
Bu muazzam programın içinde ben neyim?, sadece bir label..
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Amaç daha profesyonel programlama ise desteği tarih sayfalarında kalan paradox'tan vazgeçip firebird veya benzeri bir veritabanı adıyla anılan bir veritabanına geçmen olmalı. Paradoks'ta da her ne kadar veri güvenliği çok düşük olsa da her veritabanındaki kuralları uygulayabilirsin; sorgulama alanlarını indekslemek :idea: select * yerine gerçekten ihtiyacınız olan alanları çekin.. en azından alan adlarını yazın. where (1=1) yerine alttaki koşullara göre oluşan where in geri kalan kısmını bir str_where_sql diye bir değişkende toplayıp

Kod: Tümünü seç

if trim(str_where_sql) <> '' then 
  Form6.Query1.SQL.Add( 'where ' + str_where_sql ); 
şeklinde yazabilirsiniz :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla