Benimde şu anda üzerinde çalıştığım projede büyük bir veritabanı var. Çok fazla tablo ve her tabloda en az 1000 satır veri var, veritabanı büyüklüğü 100 MB civarı. Bazı MySQL sorgularımın süresi 30 sn civarına çıkmıştı. Ancak şimdi en uzun sorgum 5-6 sn civarında.
Bu optimizasyon sonucunda ulaştığım kanaat; MySQL sorgusunu hazırlarken özellikle raporlama yaparken, sorgu girdilerine ne kadar PHP'yi bulaştırmazsam sorgu o kadar hızlı oluyor.
IF / ELSE bloklarımın tamamını sorgu üzerinde kurmaya çalıştım.
Dışarıdan Değer alan Prosedür'ler oluşturarak sorgu sürelerini şaşıracağın değerde düşerebilirsin.
Birde kendi yaptığım hatalar, Sorgu içerisinde alt sorgu veya iç içe sorgu kullanmak yerine bolca JOIN kullanmakta benim çok işime yaradı.
İnsanın başına gelince anlıyor, en azından benim için öyle oldu. İçine girdiğinde MySQL'in "SELECT * FROM" olmadığını anladım.
Reklam kokan hareketler (BENCE)
Ben bu eklentiyi kullanıyorum, işini görür.
Hocam şöyle olabilirmi;
Login sayfasını admin olarak, index sayfanı yönetim olarak değerlendirmek olmazmı. Eğer yanlış anlamadıysam.
Eğer alt sayfaları yüklemek için bir switch case yapısı kullanıyorsanız, GET değerinden yakalayabilirsiniz.
@rephp7 desteğin için tşkler, bende aşağıdaki gibi yazmıştım
SUM(CASE WHEN Payment_Method = 'N' THEN Payment_Amount ELSE '' END) AS Payment_SUMN,
SUM(CASE WHEN Payment_Method = 'K' THEN Payment_Amount ELSE '' END) AS Payment_SUMK,
boş string yerine "0" yazmam gerekiyormuş, tekrar tşkler...
Merak ettiğimden test etmek istedim, toplam 1279 kayıt olan bir tabloda sonuçlar aşağıdaki gibi çıktı. Tabiki @abdullahx dediği ölümcül bir uyarı, "Eğer bir sql sorgusunda kullanıcıdan gelen bir değişken kullanacaksanız prepare ile, siz kendiniz arka planda kullanıcının müdahalesi olmadan bir sql sorgusu yazacaksanız query ile yazın."
Aradaki fark : 3,8 kat
Sorgu Süresi : 0.00263 Saniye
$Query = $SQLConnect -> GetSQL() -> prepare("SELECT * FROM payment_payment WHERE Payment_Status = ?");
$Query -> execute([1]);
$Query = $Query -> fetchAll();
Sorgu Süresi : 0.00067 Saniye
$Query = $SQLConnect -> GetSQL() -> query("SELECT * FROM payment_payment WHERE Payment_Status = 1") -> fetchAll();
foreach($say as $sifreyegit)
{
echo "<a href='yenisifrebelirle.php?yenile=".$sifreyegit["kullanicilar_sifre"]."'>Şifre Yenile</a>";
}
Benim de bir katkım olsun, bende Koala adlı uygulamayı kullanıyorum, VSCode eklentisini de kullandım, bu bana daha kullanışlı geldi, extra özellikleri mevcut
800px altında .Content'i display: block yapınca konu çözüldü. Cvp verenlere tşkler