php fikir ihtiyacı.
arkadaşlar bişey sorcam fikir verirseniz çok sevinirim.
benim 2 büyük veri tabanım ve çok sayıda verilerim var bunları karşılaştırıp filtreleyip işlemler yapıyorum bazen iç içe 3 döngü olmak zorunda oluyo ve işlem sayısı fazla olduğu için haliyle kasma gerçekleşiyor.
kasma 7, 8 saniye sürüyo
döngüler ve kod kısmında sorun olduğunu düşünmezsek eğer
ne yapabilirim bu süreyi en aşağılara çekebilmek için ?
fikri olan bilen yardımcı olursa sevinirim. Kolay gelsin.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
Buna benzer bir işlemi yakın zamanda yapmak zorunda kaldım. Yorumlarda arkadaşlar bahsetmiş her döngüde SQL sorgusu ile yeniden veri çekmek sunucunu oldukça yoracaktır.
Önerim INNER JOIN kullanman ve verileri tek sorgu ile alıp içinde arama yaptırman yönünde olacaktır. Yada verileri parçalama şansın var ise indexlemeni kolaylaştırabilirsi.
Ben bu demiş olduğun db işlemlerinden çok daha fazla büyük db de çalıştım sorgu attıgım örnek veriyorum.
Tarih ise veya Müşteri Kodu ise ben oraya index atadım saniyede 3sn'de 500.binden fazla kayıt çekiyorum ve sistem bana mısın demiyor.
Kullandığım tablo ise datatable js tablosu mysql 5.7 sürümü kullanıyorum. Unutmadan da bunuda söyliyim kullandığın sunucuda ram ne kadar yüksek ise o kadar iyi performans alıyorsun.
@kargasa1982
ben döngü içine sql kodu yazmıyorum ve yazılmaz yapılmaması gereken bişey olarak biliyorum verileri 1 kere çekip in_array array_search array_filter kullanıyorum ve yeterli oluyo
sorun 2000 tane kaydım var 10.000 tane ürün
o 2000 i döngüye sokuyorum ve 10.000 içinde işlem yapıyorum
döngüye girmeden önce ms hızında olan sistem döngünün verdiği çıktı ile 6sn oluyo
iç içe döngü kullanmak zorunda kalıyorsan 3 farklı önerim olacak;
1) sorgularında join vb. ifadeler ile birden fazla tabloyu ilişkilendirmen
2) tablo yapını değiştirmen.
3) sabit birşeyler çektiğin tablon varsa onları tek seferde çekip array içine almak ve in_array kullanarak veya while gibi döngüler ile döngüyü array üzerinde döndürmen, böylece birçok sorgudan kurtulman.