PHP bunu yapıyor ya da ben ilk sorgu sonucunu alma ve sonra kayıtları sayma geleneksel şekilde başvurmak gerekir bu iyi bir uygulama olduğunu merak ettim?
Kenara PHP SQL sorgusu veya saklı yordam kutsal savaşı bırakarak, veritabanına daha az gezileri en iyi uygulamadır. Orada zaman veritabanına öyle & geri recouped ve sorguları ayıran veri sorguları arasında değişen riskini taşır olamaz.
Sorgu kendisi optimize edilebilir? Bu örnekte, potansiyel olarak yes:
SELECT COUNT(*)
FROM TABLE t
JOIN TABLE t2 ON t2.userB = t.userA
AND t2.userA = '$row[username]'
WHERE t.userB = '$p'
Eğer gerçekten sorgu performansı hakkında emin olmak istiyorsanız, bir açıklamaya planı üreten ve aşina almak gerekecek ayarlamak sorgu için çıktı ve yorumlama.
What's an Explain Plan?
MySQL planını açıklamak MySQL sorgu iyileştirici en iyi erişim için talep olan verileri sırayla bir SELECT deyimini çalıştırmak için karar nasıl gösterir.
How Do I Generate an Explain Plan?
MySQL, sadece SELECT
anahtar kelime önce SELECT sorgusu için anahtar kelimeyi explain, eklemek zorunda. IE:
EXPLAIN SELECT COUNT(*)
FROM TABLE t
JOIN TABLE t2 ON t2.userB = t.userA
AND t2.userA = '$row[username]'
WHERE t.userB = '$p'
Muhtemelen daha önce bu sözü olmalıydı, ama sizin için sorgulanan ne dönmeyecek çünkü PHP içinde bu çalıştırmak istemiyorum. Neyse SQL IDE gibi PHPMyAdmin / etc kullanın.
I've Gots My Explain Plan, But What Does it Mean?!
MySQL EXPLAIN documentation döndürülen her sütun üzerinde okumak için iyi bir yerdir, & sütun neyi temsil.