Çok Yakında Yeni Bir Arayüzle karşınızdayız! http://yeni.delphican.com/

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.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
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ü.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@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.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
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
  ÇÖZÜLDÜ-dikdörtgen alanın resim pixel renk değerlerini okuma sadikacar60 2 149 29-10-2019, Saat: 14:48
Son Yorum: sadikacar60
  Paradox veri tabanında veri arama listeleme düzenleme sonic33 2 123 26-10-2019, Saat: 10:43
Son Yorum: sonic33
  İlişkili Combobox (Çözüldü) bünyamin68 11 397 23-10-2019, Saat: 11:02
Son Yorum: bünyamin68
  ORM için öneri OBK 6 1.077 22-10-2019, Saat: 15:46
Son Yorum: 3ddark
  başlangıç için yardım kazimtabakli 5 172 22-10-2019, Saat: 14:51
Son Yorum: uparlayan



Konuyu Okuyanlar: 1 Ziyaretçi