Hız ile ilgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ertline
Üye
Mesajlar: 137
Kayıt: 23 Nis 2005 09:15
Konum: Bartın
İletişim:

Hız ile ilgili

Mesaj gönderen ertline »

S.A. arkadaşlar

Kod: Tümünü seç

Programımı hızlandırmak için neler yapabilirim 

1. Sorgulama, Sıralama ve gruplama için çok kullandığın alanları indeksle. Mesela genelde kayıtlarını tarih'e göre süzüyorsan, Tarih alanını indeksle. 

2. Sadece gerekli alanları seç. Mesela bir tabloda 15 alan var ve sana sadece 4 tanesi yetiyor ise, "SELECT *" ile tüm alanları seçmek yerine, "SELECT ALAN1, ALAN2, ALAN3, ALAN4" gibi sadece gerekli alanları seç. 

3. BLOB alan kullanıyorsan sorguda bunları seçmemeye gayret et. 

4. ve en önemlisi ne kadar az kayıt seçebiliyorsan o kadar iyi ve hızlı olur. Mesela fatura girişi yaparken tüm fatura tablosunu seçmek yerine sadece 1 kayıt seçebilirsin. 

5. Eğer veritabanınız destekliyorsa mümkün olduğu kadar veritabanı bazlı çalışın, trigger ve stored procedure kullanın.

Bu maddelerden 4. sünü nasıl uygulayacağım konusunda bilgi alabilir miyim.(Firebird kullanıyorum).
Benim kendi uyguladığım sistem şu:

dataset in Selectsql ine tasarım anında Object inspector penceresinden

Kod: Tümünü seç

Select *from MASTER_TABLE_ADI
detail tablolar içinde

Kod: Tümünü seç

Select *from DETAIL_TABLE_ADI WHERE(DETAIL_NO=:MASTER_ID)
şeklinde yapıyorum.
4. maddede anladığım kadarıyla

Kod: Tümünü seç

Select *from TABLE_ADI değilde Select *from TABLE_ADI WHERE ÇEKİLECEK KAYIT
şeklinde.
Bu konuda bilgi alabilir miyim?
"Bilginin Doruğuna Hep Birlikte..."
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

dataseti su sql ile acman demek oluyor,
Select *from MASTER_TABLE_ADI Where FaturaNo=54354
gibi
ÜŞENME,ERTELEME,VAZGEÇME
ertline
Üye
Mesajlar: 137
Kayıt: 23 Nis 2005 09:15
Konum: Bartın
İletişim:

Mesaj gönderen ertline »

Select *from MASTER_TABLE_ADI Where FaturaNo=54354

Burdaki FaturaNo=54354 bu tanımlamayı genel olarak nasıl yapabilirim yani benim açacağım FaturaNo=0001 de olabilir yada herhangibir rakam bunu nasıl belirteceğim
Bunun gibi
mesela
"Select * from CARI" sorgusunuda "Select * from CARI where adı=ertline"

şeklinde değilde parametreli olarak nasıl yazacağım adı kısmına ertline
değil de herhangibir isim gelebilir bunu nasıl belirteceğim.

bir örnekle açıklarsanız sevinirim.
"Bilginin Doruğuna Hep Birlikte..."
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Select *from MASTER_TABLE_ADI Where FaturaNo=:FaturaNo

Dataset1.ParamByName('FaturaNo').AsInteger:=67678;
Dataset1.Open;
ÜŞENME,ERTELEME,VAZGEÇME
ertline
Üye
Mesajlar: 137
Kayıt: 23 Nis 2005 09:15
Konum: Bartın
İletişim:

Mesaj gönderen ertline »

Aşağıdaki gibi bir uygulamada aynı sonucu verir mi
hız konusunda acaba?

Kod: Tümünü seç

Select FIRST 10 *from cari_kayit
Select FIRST 10 *from cari_hesap where(dno=:kno)
"Bilginin Doruğuna Hep Birlikte..."
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

öncelikle sorgularınızdaki * ifadesi yerine seçmek istediğiniz alanları teker teker yazın :idea:
DeveloperToolKit

..::|YeşilMavi|::..
Cevapla