Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
StringList en hızlı aktarım Veritabanı
#1
değerli arkadaşlar aşağıdaki döngü haricinde stringliste daha hızlı ekleme şansı varmı?

MyFiles := TStringList.create();
try
Dm_Foto.FD_FotoView.First             ;
 while not Dm_Foto.FD_FotoView.eof do
 begin
 myfiles.Add(Dm_Foto.FD_FotoView.FieldByName('FULLYOL').AsString);
 Dm_Foto.FD_FotoView.Next;
 end;
finally
 MyFiles.Free;
end;

vt :firebird
Cevapla
#2
Eğer dataset'ten tek tek çekeceksen While döngüsünü FD_FotoView.DISABLECONTROLS ve FD_FotoView.ENABLECONTROLS arasına alabilirsin.

Daha pratiği ise listeyi veritabanından virgül ile ayrışmış ve tek satırda çekebilirsin. Bunun için Firebird'de SELECT ile LIST komutunu kullanabilirsin. Delphi tarafında ise MyFiles.DelimitedText property'sine gelen veriyi doğrudan alabilirsin. ( Delimiter parametresini virgül yapmayı unutmayın )
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
WWW
Cevapla
#3
(12-06-2020, Saat: 11:04)uparlayan Adlı Kullanıcıdan Alıntı: Eğer dataset'ten tek tek çekeceksen While döngüsünü FD_FotoView.DISABLECONTROLS ve FD_FotoView.ENABLECONTROLS arasına alabilirsin.

Daha pratiği ise listeyi veritabanından virgül ile ayrışmış ve tek satırda çekebilirsin. Bunun için Firebird'de SELECT ile LIST komutunu kullanabilirsin. Delphi tarafında ise MyFiles.DelimitedText property'sine gelen veriyi doğrudan alabilirsin. ( Delimiter parametresini virgül yapmayı unutmayın )

kayıt sayısı 9000 olan var SELECT ile LIST komutunu deniyecem anında sonuç verirmi acaba?
Cevapla
#4
https://github.com/PacktPublishing/Delph...rformance/ burda örnekleri var, control f ile string list şeklinde aratın, 
hangi yöntemin ne kadar performanslı olduğunu bulabilirsiniz.
daha detaylı bilgiler bu kitapta, herkese tavsiye ederim. çok faydalı bir kitap.
https://books.google.com.tr/books/about/...edir_esc=y

4y7yd9.png

Hc0zPa.png
Cevapla
#5
Mevcut kayıtlar ile ne kadar süre aldığını merak ettim, bu soruyu sorduracak kadar yavaş ise sorunu veritabanı tarafından çözebilirsiniz.

Ekranda GRID var ve veritabanı buraya veri basıyorsa akışta ekranda bunu göstermek için kayıt başına bir PAINT süresi alacaktır. Bence sizin sorun burada.

@uparlayan 'ın WHILE EOF'dan hemen önce  DISABLECONTROLS ve END'den sonra da  ENABLECONTROLS şeklinde arasına alma fikrini mutlaka değerlendirin. Başka bir şeye ihtiyacınız kalmayacaktır.

NOT : Bir de aktif Grid'e bağlı FDQuery kullanmaktansa sadece bu işler için ve sadece dilediğiniz sayıda kayıt ve field çeken servis Query nesneniz olsun. Bunu dinamik/anonim olarak da lazım olduğunda CREATE edip try / finally ile oracıkta FREE edebilirsiniz.  Idea


Ekleme: PATH konusunda sürekli yinelenen kayıtları GROUP BY veya DISTINCT ile de sadeleştirip, 9000 kaydı 100-200 taneye de indirebilir performansı tavan yaptırabilirsiniz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#6
MyFiles := TStringList.create();
    MyFiles.Delimiter:=(',');
   try
   myfiles.Text:=(Dm_Foto.FD_FotoThum.FieldByName('FULLYOL').AsString);
    Form_AnaSayfa.Image.FillFromList( MyFiles);
   finally
     MyFiles.Free;
  
   end;

parametre hatalı diyor neyi yanlış yapıyorum

(12-06-2020, Saat: 12:07)mrmarman Adlı Kullanıcıdan Alıntı: Mevcut kayıtlar ile ne kadar süre aldığını merak ettim, bu soruyu sorduracak kadar yavaş ise sorunu veritabanı tarafından çözebilirsiniz.

Ekranda GRID var ve veritabanı buraya veri basıyorsa akışta ekranda bunu göstermek için kayıt başına bir PAINT süresi alacaktır. Bence sizin sorun burada.

@uparlayan 'ın WHILE EOF'dan hemen önce  DISABLECONTROLS ve END'den sonra da  ENABLECONTROLS şeklinde arasına alma fikrini mutlaka değerlendirin. Başka bir şeye ihtiyacınız kalmayacaktır.

NOT : Bir de aktif Grid'e bağlı FDQuery kullanmaktansa sadece bu işler için ve sadece dilediğiniz sayıda kayıt ve field çeken servis Query nesneniz olsun. Bunu dinamik/anonim olarak da lazım olduğunda CREATE edip try / finally ile oracıkta FREE edebilirsiniz.  Idea


Ekleme: PATH konusunda sürekli yinelenen kayıtları GROUP BY veya DISTINCT ile de sadeleştirip, 9000 kaydı 100-200 taneye de indirebilir performansı tavan yaptırabilirsiniz.

bazen mutluluğa giden yolda kalbim hızlı atmaya başlıyor korkuyorum... haklısınız bende 50 kayıt için denedim..normaldi.. 9000 kayıtta yavaşlar diye düşünmüştüm
Cevapla
#7
SELECT Cümlenizi paylaşırmısınız.

+

myfiles.Text :=(Dm_Foto.FD_FotoThum.FieldByName('FULLYOL').AsString);

değil,

myfiles.DelimitedText := (Dm_Foto.FD_FotoThum.FieldByName('FULLYOL').AsString);
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
WWW
Cevapla
#8
(12-06-2020, Saat: 12:30)uparlayan Adlı Kullanıcıdan Alıntı: SELECT Cümlenizi paylaşırmısınız.

select ARSIVNO,LIST(FULLYOL) AS FULLYOL from FOTOLAR GROUP BY ARSIVNO ORDER BY ARSIVNO ASC



Form_AnaSayfa.ImageEnMView1.LockUpdate;
    MyFiles := TStringList.create();
    MyFiles.Delimiter:=(',');
   try
   myfiles.DelimitedText:=(Dm_Foto.FD_FotoThum.FieldByName('FULLYOL').AsString);

   Form_AnaSayfa.ImageEnMView1.Clear();
   Form_AnaSayfa.ImageEnMView1.FillFromList( MyFiles,'',true);
   finally
     MyFiles.Free;
     Form_AnaSayfa.ImageEnMView1.unLockUpdate;
   end;

bu şekildede olmadı
Cevapla
#9
Hata mesajı tam olarak nedir, paylaşır mısınız?
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
WWW
Cevapla
#10
select ARSIVNO,LIST(FULLYOL) AS FULLYOL from FOTOLAR GROUP BY ARSIVNO ORDER BY ARSIVNO ASC

şimdi dikkatimi çekti 
fullyol (path) aslında aradaki boşluklarada virgül atmış LIST ek fonksiyonları mı var acaba

D:\DENEME\0000000005-MRAT,ÖZYURT,KARABACAK\0000000005-GN-0050.JPG,D:\DENEME\0000000005-MRAT,ÖZYURT,KARABACAK\0000000005-GN-0051.JPG,D:\DENEME\0000000005-MRAT,ÖZYURT,KARABACAK\0000000005-GN-0052.JPG


MRAT,ÖZYURT,KARABACAK
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Datasnap veritabanı kayıt serdar 2 351 30-11-2025, Saat: 10:53
Son Yorum: serdar
  Hızlı Satış Hk. Bir Soru erdal51 3 992 19-08-2024, Saat: 11:32
Son Yorum: erdal51
  server programinda hani veritabani dogru olur. sadikacar60 4 1.177 30-01-2024, Saat: 21:06
Son Yorum: sadikacar60
  COZULDU veritabani prg yerine ne kullanabilirim. sadikacar60 8 1.856 29-01-2024, Saat: 18:41
Son Yorum: sadikacar60
  SQL VeriTabanı Kopyalama Hk. glagher 4 1.434 10-09-2023, Saat: 14:18
Son Yorum: glagher



Konuyu Okuyanlar: 2 Ziyaretçi