v2.5.2
Giriş yap

php fikir ihtiyacı.

aziz1235
579 defa görüntülendi ve 1 kişi tarafından değerlendirildi

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.

Cevap yaz
Cevaplar (4)
saffetoge
1180 gün önce

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.

zelemi
1180 gün önce

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.

aziz1235
1183 gün önce

@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

kargasa1982
1183 gün önce

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.