lostyazilim
tr.link

Php - MySQL Sorgu fazlalığı için çözüm?

10 Mesajlar 1.596 Okunma
acebozum
tr.link

webkartali webkartali Web Developer Kullanıcı
  • Üyelik 20.11.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek Web Developer
  • Konum Ankara
  • Ad Soyad A** A**
  • Mesajlar 188
  • Beğeniler 171 / 84
  • Ticaret 0, (%0)
Merhaba Arkadaşlar..

Uzun süre oldu üzerinde çalışıyorum ama bir çözüm bulamadım.. Sizlerin desteğine fikirlerine yardımına ihtiyacım var.

Durumu Kısaca basit haliyle özetleyecek olursam;
2 Adet a1.php ve a2.php adlarında sayfalarım mevcut.

a1.php sayfasında 100 adet nesne mevcut..Bu nesneleri bir eşya, insan , vb. bir varlık olarak düşünebilirsiniz, pek bir önemi yok. 100 defa sql sorgusu çalışması gerekiyor. Çünkü 100 adet nesnenin istediğim bazı özellikleri var , onların durumlarını öğrenmem gerekiyor. Bu nedenle 100 nesne için ayrı ayrı sql sorgusu çalışıyor. Haliyle sayfa GÜÜÜM... Sayfanın yüklenme süresi en az 8 ~ 10 sn sürüyor. Bu çok ciddi bir sorun benim için.

sorguda da sadece eşyanın id değeri değiştiği için fonksiyon içine aldım sorguyu ve a2.php sayfasına yerleştirdim.


a1.php sayfasına a2.php sayfasındaki fonkiyonu çağırıp 100 adet sorgunun çalışmasını sağlıyorum.

istediğim olayı gerçekleştiriyorum. ama sayfa çok aşırı ağırlaşıyor.

siz böyle bir durumda ne yapardınız ? yolu yordamı , bir fikri olan var mı ?
 

 

Ücretsiz Web Uygulamalar, Scriptler www.webkartali.com 'da..
elektronikssl
webimgo

HapyMan HapyMan Full Stack Developer Kullanıcı
  • Üyelik 14.05.2016
  • Yaş/Cinsiyet 32 / E
  • Meslek What do you do exactly ?
  • Konum İstanbul Avrupa
  • Ad Soyad T** T**
  • Mesajlar 561
  • Beğeniler 171 / 208
  • Ticaret 0, (%0)
özellikler ne kadar farklı şöyle tek sorguda bütün özellikleri getirip daha sonra parçalasan ne kadar zora sokar seni yada çağıracağın içeriği lazyload mantığıyla yüklesen senin işine ne kadar yarar ?


ek olarak : Bir önceki içeriğe göre bir sonra ki içeriği şekillendirme gibi bir durumun mu var ki her seferinde ayrı sorgular atıyorsun ?
 

 

webkartali webkartali Web Developer Kullanıcı
  • Üyelik 20.11.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek Web Developer
  • Konum Ankara
  • Ad Soyad A** A**
  • Mesajlar 188
  • Beğeniler 171 / 84
  • Ticaret 0, (%0)
Hocam ürün1, ürün2, ürün3,......ürün99, ürün100 diye düşünün..
bnların id değerleride 1,2,3....99, 100 diyelim..

ben diyorum ki select * from tabloadi where id=1 olanın detaylarını çek..
sonra aynı şekilde where id=2 ,3, 4, .. 100 e kadar gidiyor.

Ben bu işlem için bir fonksiyon yazdım tabii function (id_degeri){
burda gelen id değerine göre yukarıdaki gibi sorgu çalışıyor. tabii döngü içine aldığım için 100 defa çalıştırıyorum.
}
 

 

Ücretsiz Web Uygulamalar, Scriptler www.webkartali.com 'da..

webkartali webkartali Web Developer Kullanıcı
  • Üyelik 20.11.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek Web Developer
  • Konum Ankara
  • Ad Soyad A** A**
  • Mesajlar 188
  • Beğeniler 171 / 84
  • Ticaret 0, (%0)



Biraz daha konuyu açayım, şeffaf olması anlaşılır olması için..

Bir insanda 100 tane diş olduğunu düşünelim. A şahsı muayene olmaya gelince hemen kontrol ediyorum. bu şahsın 100 tane dişinin her birine ne işlem yapılmış diye.

15 nolu dişine daha önce dolgu yapılmış, 23 nolu diş taşı temizliği yapılmış, 46 nolu diş çekilmiş. 15 nolu dişe tekrardan farklı bir işlem yapılmış gibi..

Yani hastanın 100 dişine ister işlem yapılmış olsun ister yapılmamış olsun her durumda sql sorgusu çekip diş diş işlem yapılmış mı diye kontrol etmem gerekiyor.

Bu şekilde Hastanın dişine işlem yapılmışsa detayları "i" üzerine gelince görünüyor..

 

 

Ücretsiz Web Uygulamalar, Scriptler www.webkartali.com 'da..
wmaraci
wmaraci

saityesilfidan saityesilfidan WM Aracı Kullanıcı
  • Üyelik 26.02.2016
  • Yaş/Cinsiyet 36 / E
  • Meslek eğitim danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad S** Y**
  • Mesajlar 90
  • Beğeniler 12 / 4
  • Ticaret 6, (%100)
Jquery php ile işlemleri resimlerin üzerine gelince çekebilirsin. Sayfa yüklenirken çekmemiş olursun.
webkartali

kişi bu mesajı beğendi.

webkartali webkartali Web Developer Kullanıcı
  • Üyelik 20.11.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek Web Developer
  • Konum Ankara
  • Ad Soyad A** A**
  • Mesajlar 188
  • Beğeniler 171 / 84
  • Ticaret 0, (%0)
@saityesilfidan; güzel fikir.. son çare olarak 100 adet sql sorgusunun bir anda çalışmaması için sizin dediğiniz yolu kullanacam.. Ama ben üzerine gelinmeden sorguyu çektiriyorum.. varsa mavi i harfi görünüyor. yoksa mavi i harfi görünmüyor normalde. örnek resimde tüm dişlere işlem yapıldığı için hepsinde "i" harfi var.
 

 

Ücretsiz Web Uygulamalar, Scriptler www.webkartali.com 'da..

ontedi ontedi www.ontedi.com Kullanıcı
  • Üyelik 03.10.2013
  • Yaş/Cinsiyet 44 / E
  • Meslek Yazılım Uzmanı, Matematikçi
  • Konum Ankara
  • Ad Soyad S** T**
  • Mesajlar 1118
  • Beğeniler 325 / 324
  • Ticaret 2, (%100)
Hover eventinde ajax islemi ile ona ait son veriyi cek. Cektigin veriyi localstorage uzerinde tutup bir daha istek yapildiginda sunucudan veri cekmemis olursun.
webkartali

kişi bu mesajı beğendi.

www.ontedi.com
www.cizgi.site

MuhammedArslan MuhammedArslan Msa Web Tasarım Kullanıcı
  • Üyelik 19.02.2017
  • Yaş/Cinsiyet 24 / E
  • Meslek Web Developer
  • Konum Bursa
  • Ad Soyad M** A**
  • Mesajlar 933
  • Beğeniler 136 / 276
  • Ticaret 11, (%100)
Her dis icin ayri bir sutun acmak yerine veriyi json formatina cevirip tek bir sutunda saklamayı deneyebilirsin. Bu veri 2 parametre içersin. Birisi dişin id degeri, digeride islem yapilip yapilmadigi. 2. degere gore mavi i simgesini gosterirsin. Uzerine geldiginde ise ajax ile o dis icin diger verileri alirsin.
webkartali

kişi bu mesajı beğendi.

webkartali webkartali Web Developer Kullanıcı
  • Üyelik 20.11.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek Web Developer
  • Konum Ankara
  • Ad Soyad A** A**
  • Mesajlar 188
  • Beğeniler 171 / 84
  • Ticaret 0, (%0)
mrarslan
Her dis icin ayri bir sutun acmak yerine veriyi json formatina cevirip tek bir sutunda saklamayı deneyebilirsin

burada ne demek istediğinizi anlamadım. biraz daha detay lütfen.. Tşk ederim
 

 

Ücretsiz Web Uygulamalar, Scriptler www.webkartali.com 'da..

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
+1 - > yukarıdaki belirtildiği gibi tab'lara tıklandığında, backend'e gidip sorgulamak sana sayfayı 20 sorgu yaptırır.

+2 -> Fakat çok değişmeyen bir veri ise, süreli cache kullanabilirsin. saat/gün.. local cache işini görür. (https://github.com/gilbitron/PHP-SimpleCache)

+3 -> imajlarıda optimize etsen (). apache'de webp vardı, %25 filan iyiydi

+4 -> embeded mongodb (document based) kullanabilirsin :) + rdbms hantallığındanda kurtarır. üstüne document'e index koyarsan.. cache'e bile gerek kalmayabilir.

muhtemel -> sayfa 1-2 saniyede açılır.
webkartali Serhanozcan

kişi bu mesajı beğendi.

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
wmaraci
wmaraci
Konuyu toplam 6 kişi okuyor. (0 kullanıcı ve 6 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al