Selamun Aleyküm Dostlar,
Kodlamakta olduğum bir uygulamada fikir, işleyiş olarak takıldığım bir nokta var. Konu hakkında fikri olan kardeşlerim yardımcı olup fikirlerini söylerse sevinirim.
Şimdi Şöyle;
2 Adet A1.php ve B1.php sayfalarım mevcut diyelim.
A1.php Sayfasında 100 adet obje (eşya, nesne vs. ) mevcut. Ben bu 100 adet nesnenin veritabanında bulunan önceki ve yeni bazı özellik yada değerlerini öğrenmem için her biri için ayrı ayrı sorgu yazmam gerekiyor. Bu da toplamda 100 adet sorgu ediyor.. Ki bu durum sayfanın aşırı yavaşlamasına sebep oluyor.
B2.php sayfasında ise A1.php sayfasında ihtiyaç duyduğum 100 adet sorguyu tek bir fonksiyonda topladım. Fazladan kod yazmakdan kurtulduk. Bu sorgularda değişen tek şey eşya, nesnenin İD değeri. Sonra bu fonksiyon sayfasını a1.php içinden include ederek çağırıp kullandım..
Sonuç :
Kodlar, fonksiyon çalışıyor, yapmak istediğimi yaptım, istediğim verileri elde ettim. İşleyişte bir sorun problem yok. Tek sorun bu işlemi yaparken 100 sorgu sebebiyle uzun vakit geçmesi. En az 8~10 sn geçiyor neredeyse.
İstediğim:
Sayfada, öyle yada böyle 100 adet sorgu çalışacak, bu durumdan kaynaklanan yavaşlama sorununu hangi yol, yöntem ile çözebilirim ?
Php / MySQL Fazlaca Sorgu Kullanımı Sorunu ? Yavaşlık için Çözüm?
7
●462
- 22-12-2017, 16:21:18
- 22-12-2017, 16:41:12Sorguda tek şart, filtre id değeri.. örneğin; select * from tabloadi where urun_id=1 gibi...Bluntk adlı üyeden alıntı: mesajı görüntüle
- 22-12-2017, 16:48:12Join olayı farklı tablolarda ortak değerler olunca kullanılır. iki tabloyu birleştirmek ve kullanmak için.. Ben ise tek bir tabloya 100 sorgu çekiyorum.cleaner80 adlı üyeden alıntı: mesajı görüntüle
siz konuyu yalnış anladınız sanırım.
- 22-12-2017, 22:48:30Kimlik doğrulama veya yönetimden onay bekliyor.1. SELECT * FROM diye SQL kodu yazma, tüm alanları tek tek yaz (SELECT uye.id, uye.rumuz, uye.sifre FROM uye) gibi
2- WHERE olarak ne kullanıyorsan o tablodaki field e İNDEX değeri ver.
3- Memcache gibi sorgu bazlı önbellekleme kullanırsan sorguyu veritabanından değil önbellekten çeker. (0.01 saniye sürer). Memcache nedir bilmiyorsan ufak bir araştırma ile basit bir şekilde kullanabilirsin. - 23-12-2017, 01:55:30WEBKARTALI adlı üyeden alıntı: mesajı görüntüle
mysql in işinizi görür diye düşünüyorum tek sorguda.
Örnek;
select * from tabloadi where urun_id IN(1,5,101,211) gibi
siz konuyu yalnış anladınız sanırım.