Konuyu Açan
#1
Bir PHP uygulamasında yavaşlık çoğu zaman PHP kodundan değil, veritabanına gereğinden fazla veya verimsiz sorgu gönderilmesinden kaynaklanır. Optimizasyona başlamadan önce darboğazı ölçmek gerekir: sorgu sürelerini kaydedin, yavaş sorgu günlüklerini inceleyin ve özellikle üretime benzeyen veri hacimleriyle test edin.
İlk adım, sorgunun gerçekten ne yaptığını görmektir. MySQL’de
PHP tarafında sık rastlanan sorunlardan biri N+1 sorgu örüntüsüdür: bir listeyi getiren tek sorgunun ardından her kayıt için ayrı sorgu çalıştırmak. İlişkili verileri JOIN veya toplu sorguyla almak genellikle daha verimlidir. Ayrıca
Her değişiklikten sonra aynı ölçümü tekrarlamak önemli; indeks eklemek veya sorguyu birleştirmek her iş yükünde aynı sonucu vermez. Sizde en belirgin kazanımı hangi yaklaşım sağladı: indeks düzenlemesi, N+1 sorgularını azaltmak mı, yoksa sorgu planını incelemek mi?
İlk adım, sorgunun gerçekten ne yaptığını görmektir. MySQL’de
EXPLAIN, kullanılan indeksi, taranan satır sayısını ve birleştirme biçimini gösterir. Sık filtrelenen veya tabloların birleştirilmesinde kullanılan sütunlara uygun indeks eklemek yardımcı olabilir; ancak her sütunu indekslemek yazma işlemlerini yavaşlatır ve depolama maliyetini artırır. Bileşik indekslerde sütun sırası da sorgudaki filtrelerle uyumlu olmalıdır.PHP tarafında sık rastlanan sorunlardan biri N+1 sorgu örüntüsüdür: bir listeyi getiren tek sorgunun ardından her kayıt için ayrı sorgu çalıştırmak. İlişkili verileri JOIN veya toplu sorguyla almak genellikle daha verimlidir. Ayrıca
SELECT * yerine ihtiyaç duyulan sütunları seçin; büyük sonuç kümelerinde sayfalama uygulayın. Hazırlanmış ifadeler SQL enjeksiyonuna karşı koruma sağlar, fakat tek başına sorguyu hızlandırmaz.KOD
123456$stmt = $pdo->prepare(
'SELECT id, title FROM posts WHERE status = :status ORDER BY created_at DESC LIMIT :limit'
);
$stmt->bindValue(':status', 'published');
$stmt->bindValue(':limit', 20, PDO::PARAM_INT);
$stmt->execute();Her değişiklikten sonra aynı ölçümü tekrarlamak önemli; indeks eklemek veya sorguyu birleştirmek her iş yükünde aynı sonucu vermez. Sizde en belirgin kazanımı hangi yaklaşım sağladı: indeks düzenlemesi, N+1 sorgularını azaltmak mı, yoksa sorgu planını incelemek mi?
