Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Kayıt bulma.
#1
Herkese merhaba. 
Bir müşterim ürünlerine promosyon kodu yazdırıyor. Bu güne kadar 285 milyon kod yazdırmış. Bu kodlar 10 karakter ve 285 ayrı excell dosyasında. Her dosyada 1 milyon kod var. 
İstenen şey şu; İstenen kod yada kodları bu 285 milyon kod içinden bulmak. Hangi dosyada ve kaçıncı satırda olduğunu bulmak istiyorlar. Bu kodları MySQL veri tabanına kayıt etmeye kalktım ama 1 milyon kod 10 dk. sürüyor. Bunun yerine bu kodları excel dosyasından aratmak için komut yada yöntem var mıdır ?
Cevapla
#2
Excel üzerinde doğrudan çalışmayı önermem.
Mutlak bir index yapısı olmalı. 
Milyonlarca kayıt arasında en hızlı bu şekilde dönebilirsiniz.
Begin : = end / 2;
Cevapla
#3
Kesinlikle @RAD Coder hocama katılıyorum. Sonuçda bu dosyalar 1 kere excelden import edilecek.. Ha en son dosyayı her defasında import etsin. ama önceki 284 excelin içeriğinin değişmediğini varsayar isek, bu tabloları excelden1 kere tabloya import ettikten sonra arama kısmı çok başarılı olacaktır.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#4
Şimdiye kadar 32 milyon kod (kayıt) yükledim. UniDAC komponentleri ile veri tabanına bağlanıyorum. 20 milyon kayıt varken UniTable1.Active := True yapınca bağlanması 10 dk. sürüyordu. Şuh anda 32 milyon olunca "Out of Memory" vermeye başladı. (Bilgisayarım 10. Nesil i7, 8 Gb RAM, 512 Gb SSD)
Cevapla
#5
Kodları Tablolara bölebilirsin. Mesala 32 tablo yap. Herbirinde 1 milyon kayıt olur. Arama için tablo ismi ile veriler arasında bir ilişki kurarsın böylelikle veri aramak istediğinde hangi tablodan alacağını bilirsin.
Cevapla
#6
(10-01-2023, Saat: 19:06)enigma Adlı Kullanıcıdan Alıntı: Şimdiye kadar 32 milyon kod (kayıt) yükledim. UniDAC komponentleri ile veri tabanına bağlanıyorum. 20 milyon kayıt varken UniTable1.Active := True yapınca bağlanması 10 dk. sürüyordu. Şuh anda 32 milyon olunca "Out of Memory" vermeye başladı. (Bilgisayarım 10. Nesil i7, 8 Gb RAM, 512 Gb SSD)

Merhaba,
UniTable1.Active := True yaptığınızda UniTable1.Filter alanında
Select * From TABLOM
şeklinde bir kod mu var?
ayrıca neden Query yerine Table kullanıyorsunuz  Idea

Kullanım amacınız kod "tabloda var mı, kullanılmış mı" bunun kontrolü ise şarta bağlı bir SQL cümlesi neden yazmıyorsunuz?

 Select PromCode,kullanildi,Alan_1,Alan_2 From TABLOM Where PromCode='PromosyonKodu' and kullanildi=1 

gibi. Buna ek olarak tablonuzda PromCode ve kullanildi alanlarında index oluşturursanız anında sonuç alırsınız.

İyi Çalışmalar.
Cevapla
#7
Aşağıdaki adımları izlerseniz sorun yaşamazsınız.

- Excel dosyalarını DB ye aktarın (kodlar random değil de düzenli bir mantık içinde üretiliyorsa mysql de bu kodları oluşturan bir function yazabilirsiniz)
- Arama yapacağınız alan için index oluşturun 
- UniQuery kullanın (uniTable tüm kayıtları aynı anda hafızaya almaya çalışır. )

bunları yaparsanız hata almadan çok kısa sürede sonuç alırsınız
Cevapla
#8
Çok yüksek kayıt sayısında veri tabanları ile çalışmadım. Hep Table üzerinden işimi gördüm. Söylediğiniz gibi yapınca sorun çözüldü. Hepinize çok teşekkür ederim.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Veri Tabanına Kontrollü Kayıt Yaptırma bünyamin68 15 798 08-03-2024, Saat: 00:06
Son Yorum: TuncayDelphi
  WebBrowser Pdf Kayıt Etme sadoal351 1 581 11-07-2023, Saat: 12:39
Son Yorum: delphiman
  DBGrid de Birden Fazla Kayıt Seçmek. OZCANK 12 3.331 07-07-2023, Saat: 15:31
Son Yorum: emre
  Kayıt Bulundu Uyarısı Mikdad 24 3.539 21-03-2023, Saat: 13:37
Son Yorum: Mikdad
  Dosya content type bulma tuna 7 1.820 18-01-2023, Saat: 20:29
Son Yorum: tuna



Konuyu Okuyanlar: 1 Ziyaretçi