ADO Query sorgu hızı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 03:27

ADO Query sorgu hızı

Mesaj gönderen underwater » 18 Eyl 2014 04:12

Arkadaşlar merhaba;

Delphi7 + MSSQL 2008 kullanıyorum.

Sorguyu Delphi içinden AdoQuery ile gönderdiğim zaman (Active=True yaparak) sorgu sonucu son derece yavaş (4-5 saniyede) gelirken
aynı sorguyu SQL Server Management Studio üzerinden çalıştırdığımda sonucun gelmesi saniye bile sürmüyor hemen geliyor.

Toplamda getirdiği satır sayısı 1500.yani ciddi bir veri değil.

Fakat buna rağmen Delphi içinde sorgu çok yavaş çalışıyor.

Bunun nedeni nedir? Normal midir?
Sorguyu Delphi içinden de hızlandırmak için ne yapabilirim?

Yardımcı olan arkadaşlara şimdiden teşekkürler.

tayipk
Üye
Mesajlar: 274
Kayıt: 27 Kas 2013 11:32

Re: ADO Query sorgu hızı

Mesaj gönderen tayipk » 19 Eyl 2014 12:13

eğer delphide ağır kaldığını düşünüyorsan sql de view oluşturup onu delphide çağırabilirsin tabi burda kullandığın grid nedir bilmediğim için herhangi bir yorum yapamıyorum ama genelde delphi tarafında tüm kayıtları açmak yerine kayıtları 100 100 yada 200 200 çağırsan çok daha hızlı çalışır.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.

underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 03:27

Re: ADO Query sorgu hızı

Mesaj gönderen underwater » 19 Eyl 2014 07:49

zaten view 'i çağırıyorum delphiden.
cxGrid kullanıyorum.
arada bu kadar ciddi fark olmaması lazım diye düşünüyorum.

Store procedure oluşturup onunlada denedim ama yine çok yavaş.

satır sayısı 1500 ama sütun sayım 21.
bunla alakası olabilirmi ?

Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 520
Kayıt: 05 May 2005 02:24
Konum: DelphiTürkiye.COM

Re: ADO Query sorgu hızı

Mesaj gönderen hi_selamlar » 19 Eyl 2014 09:01

underwater yazdı: cxGrid kullanıyorum.
cxGrid bir özelliği vardı. Tam ismini hatırlamıyorum. GridMode veya ona benzer bir şey.
O özelliği iptal ederseniz veri listelemesi hızlı olacaktır.

Ama bu özelliği devre dışı bırakırsanız, otomatik filtreleme vs. gibi özellikler devre dışı kalacaktır.
Onları manuel kendiniz tablo filtreleme ile yapabilirsiniz.

Kolay gelsin..
Herkes cahildir, bazi konularda.

tayipk
Üye
Mesajlar: 274
Kayıt: 27 Kas 2013 11:32

Re: ADO Query sorgu hızı

Mesaj gönderen tayipk » 19 Eyl 2014 09:55

bende projelerimde devexpress cxgrid kullanırım ama inanın bu söylediğiniz sıkıntıyı hiç yaşamıyorum şu anda yaklaşık 20.000 kayıtlı stok hareket raporu alıyorum yaklaşık olarak 2 -2,5 sn gibi bir zamanda geliyor ama şu var ben view kullanmıyorum direk queryime yazıyorum kodlarımı sonrada open yapıyorum raporum gayet hızlı bir şekilde geliyor birde kaç tablo join yapıyorsun?
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.

Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 04:43
İletişim:

Re: ADO Query sorgu hızı

Mesaj gönderen barisatalay » 19 Eyl 2014 09:56

querynin calculate olayında birşeyler yapmadığınıza emin misiniz ? Çünkü orası her satır için ayrı bir işlem yapıyor.

underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 03:27

Re: ADO Query sorgu hızı

Mesaj gönderen underwater » 19 Eyl 2014 03:02

12 tabloyu join yapıyorum.
Calculate olarak 1 sütunumu hesaplatıyorum.

yavaşlığın cxgrid ile alakası yok.Çünkü grid bağlantısını koparıp denedim yine yavaş.

Söylediklerinizden anladığım kadarıyla bu yavaşlık normal.Sanırım çok fazla tabloyu birbirine join ettiğim için yavaş bu kadar.

Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 04:43
İletişim:

Re: ADO Query sorgu hızı

Mesaj gönderen barisatalay » 19 Eyl 2014 03:49

hesaplama yaptırıyorum diyorsun 1500 satır geliyor diyorsun şöyle düşünürsek 1500 tane işlem yapıyor değil mi ? Eğer doğru ise yavaşlık bana normal geldi.

AliCinkilic
Üye
Mesajlar: 43
Kayıt: 01 Kas 2013 10:03

Re: ADO Query sorgu hızı

Mesaj gönderen AliCinkilic » 19 Eyl 2014 04:12

Sorunun nedeni connectionstring de servername olarak . (nokta) yada (local) olabilir.
Bazen bilgisayar üzerinden birden fazla internet olmasından da kaynaklanabilir, mesela aynı anda hem ethernet hemde wifi üzerinden internete bağlı olmak gibi.

tayipk
Üye
Mesajlar: 274
Kayıt: 27 Kas 2013 11:32

Re: ADO Query sorgu hızı

Mesaj gönderen tayipk » 19 Eyl 2014 05:25

Aslında önemli olan şu soruya cevap bulmak 1500 kayit geri donuyor ama bu 1500 kayit 12 tane tabloda kaç tane kaydi sorgulayip donuyor ornegin tablo 5 te 40000 kayit varsa o 1500 kaydi döndürmek için 40000 kaydi sorgulayacak anlamına geliyor.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.

Kullanıcı avatarı
csunguray
Üye
Mesajlar: 845
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: ADO Query sorgu hızı

Mesaj gönderen csunguray » 20 Eyl 2014 03:13

1. Süre kıyaslaması yaparken kaç tane JOIN yaptığınızın bir önemi yok. Çünkü aynı JOIN leri sorguyu Management Studio ile çalıştırırken de kullanıyorsunuz. (Yoksa farklı sorgu mu yazıyorsunuz?)

2. Tabloyu açmadan önce disableControls yapın.

Kod: Tümünü seç

  try
    ADOQuery1.DisableControls;
    ADOQuery1.Open;
  finally
    ADOQuery1.EnableControls;
  end;
5. Data'nın cxGrid'e bağlı olması mutlaka performansı düşürür. Süre kıyaslaması yaparken ölçümü cxGrid'e bağlı değilken yapın.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)

underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 03:27

Re: ADO Query sorgu hızı

Mesaj gönderen underwater » 23 Eyl 2014 04:26

tayipk hocam senin soruna cevap vereyim öncelikle:
1500 satır geliyor ve diğer tablolarda bahsettiğin gibi 40.000 kayıt yok.En kabadayı tablom 5000 satır.

csunguray hocam dediğiniz doğru.Aynı joinleri Management Studio da da kullandığım için sıkıntı joinlerden kaynaklanmıyordur.
Bahsettiğiniz DisableControls/EnableControls u aynen denedim bir değişim olmadı.

Garip olan taraf şu

SQL sorgusunu Management Studio içinden çalıştırıyorum çok hızlı.
Aynı SQL sorgusunu kullanarak Management Studio içinde view oluşturup delphi tarafındada bu view ı kullanmak istersem işte o anda yavaşlıyor.(Gride bağlamadan da denedim)
Sırf bu iş için store procedure oluşturdum oda yavaş.View ile store procedure hızı aynı.

tayipk
Üye
Mesajlar: 274
Kayıt: 27 Kas 2013 11:32

Re: ADO Query sorgu hızı

Mesaj gönderen tayipk » 23 Eyl 2014 08:40

view den ziyade dorgunuzu direkt olarak Adoquery nin stringine yazıp open yapmayı deneidiniz mi?
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.

underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 03:27

Re: ADO Query sorgu hızı

Mesaj gönderen underwater » 24 Eyl 2014 09:43

sıkıntının kaynağını buldum arkadaşlar.

sorgudaki

Where (dbo.SiparisTur.AnaTur = 'S') AND (dbo.SiparisTur.AnaGrupID = 2)

ifadesi sorgunun yavaşlamasının tek sebebi imiş.

Bu ifadenin sorguyu bu kadar yavaşlatabileceğini hiç düşünmemiştim.

Management Studio da bu ifadeyi kullanmıyordum.Ondan hızlı imiş.

Sizleride boşuna yordum kusuruma bakmayınız.

opordace
Üye
Mesajlar: 15
Kayıt: 28 Nis 2015 01:44

Re: ADO Query sorgu hızı

Mesaj gönderen opordace » 05 Şub 2018 04:07

Merhaba Arkadaşlar,
1.2 milyon kayıtlı bir database den
Select AdisyonID,UrunID from vw_ext_SipSatis_Gecmis' sorgusu ile 8 sn ye DBGrid e yüklüyorum.
Select AdisyonID,UrunAD from vw_ext_SipSatis_Gecmis' sorgusu ile yaklaşık 3 dk sürüyor. urunID integer, UrunAD string, sorgu süresi bu kadar farkeder mi arkadaşlar. UrunAD sorguda yazmadığımda sorgu sonucunu yazdırırken mecbur ürün ismini kullanacağımdan orada hata veriyor, bulunamadı filan diye. Bu sorguyu hızlandırmanın başka bir yolu varmı?

Cevapla