![]() |
|
[ÇÖZÜLDÜ] Veritabanından hızlı veri çekmek için tavsiye - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: [ÇÖZÜLDÜ] Veritabanından hızlı veri çekmek için tavsiye (/showthread.php?tid=3692) |
[ÇÖZÜLDÜ] Veritabanından hızlı veri çekmek için tavsiye - shooterman - 31-05-2019 Selamlar Arkadaşlar hergün tabloma 450 bin satır veri eklenmektedir. 1 günlük veri sorgulaması yaptığımda delphide kodların çalışması ve bu verileri dbgride aktarması yaklaşık 1 dakika sürmektedir. Bu verileri daha süratli çekmek için öneriniz nedir? Koda gelince; standart olarak select min(degerx) where tarih between tarih1 and tarih2ve select max(degerx) where tarih between tarih1 and tarih2şeklindedir. Veritabanı olarak mysql kullanıyorum. Delphi içerisinde yapılan işlem ise, bu 450 bin satır içerisinden 350 farklı bilginin minimum ve maksimum değerleri sorgulamak ve bu değerleri başka bir tabloya insert etmektir. Ancak tarih aralığı birkaç gün olursa, program cevap vermeyecek duruma geliyor. Verinin daha hızlı sorgulanması adına yardımlarınızı rica ediyorum. Veritabanından hızlı veri çekmek için tavsiye - frmman - 31-05-2019 Bu sorguları mysql workbench vb database yönetim araçlarında çalıştırdığınızda nasıl bir tepki alıyorsunuz. Gecikme database tarafındamı kaynaklanıyor, network transfer sürecindemi yoksa delphi içerisindeki iç hesaplamadamı. İşlemi uzatan kısmı tespit edip ona göre bir çözüm aramak mantıklı olur Veritabanından hızlı veri çekmek için tavsiye - meko - 31-05-2019 Merhaba, Yardımcı (özet) tablolar oluştursan ana tablo için bu tabloları güncelleyecek triggerlar yazsan ve sorgularını yardımcı tablolar üzerinde yapsan işini görebilir Veritabanından hızlı veri çekmek için tavsiye - shooterman - 31-05-2019 Selamlar Tabloda bulunan İndex yapısını değiştirdim. 1 alanı indexlemiştim, 3 e çıkardım. Ayrıca başka bir tabloya da index alanı ekledim. Süre ölçümleri yaptığımda, 2 indeksli tabloda sorgulama işlemi 126 saniye sürerken, 3 indeksli tabloda 15 saniyeye düştü. [ÇÖZÜLDÜ] Veritabanından hızlı veri çekmek için tavsiye - adelphiforumz - 31-05-2019 @"wiseman" Öncelikle hız için yazmamı daha önemli sorgumu daha önemli buna karar vermende fayda var Eğer yazma sırasında hızın çok büyük önemi yoksa ve önem sorgu sırasında ise indexleri kaldırıp @meko nun tavsiyesini dikkate almanı öneririm. indexler sorgularda hız kazandırır doğrudur fakat yaza sırasında hızı düşürür. bunuda göz ardı etmemenizi öneririm. Cvp: [ÇÖZÜLDÜ] Veritabanından hızlı veri çekmek için tavsiye - shooterman - 31-05-2019 (31-05-2019, Saat: 14:15)adelphiforumz Adlı Kullanıcıdan Alıntı: @"wiseman" @meko nun söylemiş olduğu işlemi zaten temp tablo oluşturarak yapmıştım ve hala da bu yapı devam etmekte. Ancak önemli olan sorgunun bana hızlı gelmesiydi. Sonrasını zaten temp tabloya yazarak ara tablo ile hesaplamaları devreye alıyorum. İlginize teşekkür ederim. [ÇÖZÜLDÜ] Veritabanından hızlı veri çekmek için tavsiye - frmman - 31-05-2019 Sorunuzunu index oluşturarak çözüme kavuşturmuşsunuz. Belki biliyorsunuzdur fakat tekrar etmekte fayda olduğunu düşünüyorum. Bir tabloda birde fazla index varsa siz use index ile şart koşmazsanız, sorgudaki where cümlesine göre database var olan indexlerden uygun bir tanesini seçecektir. Kullanılan indexleri ve index sayesinde süzülen kayıt bilgilerini Explain select min(degerx) where tarih between tarih1 and tarih2 veya daha detaylı bilgi için Explain extended select min(degerx) where tarih between tarih1 and tarih2 ile oluşturduğunuz indexlerin etkilerini gözlemleyebilirsiniz. |