Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[ÇÖZÜLDÜ] Veritabanından hızlı veri çekmek için tavsiye
#1
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 tarih2
  ve  
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.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Cevapla
#2
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
Cevapla
#3
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
Cevapla
#4
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ü.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Cevapla
#5
@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.
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#6
(31-05-2019, Saat: 14:15)adelphiforumz Adlı Kullanıcıdan Alıntı: @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.

@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.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Cevapla
#7
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.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Fastreport İçindekiler Sayfası Oluşturma [ÇÖZÜLDÜ] bydelphi 1 181 18-03-2024, Saat: 12:11
Son Yorum: bydelphi
  IEC 61850 Potokolünden veri alma shooterman 1 413 14-03-2024, Saat: 11:38
Son Yorum: shooterman
  Veri Tabanına Kontrollü Kayıt Yaptırma bünyamin68 15 617 08-03-2024, Saat: 00:06
Son Yorum: TuncayDelphi
  Çok Satırlı Filtreleme [Çözüldü] bünyamin68 12 1.253 14-02-2024, Saat: 22:42
Son Yorum: mustafaozpinar
  [ÇÖZÜLDÜ] macos işletim sistemine program yazmak shooterman 5 451 02-02-2024, Saat: 09:54
Son Yorum: shooterman



Konuyu Okuyanlar: 1 Ziyaretçi