PHP パフォーマンス分析における PDO::rowCount と COUNT(*)
PHP で PDO を使用して SQL データベースを操作する場合、一般的なタスクは、特定の基準に一致する行の数をカウントすることです。これは、SQL クエリで PDO::rowCount() または COUNT(*) を使用して実現できます。ただし、どちらの方法の方がパフォーマンスが高いかという疑問が生じます。
PDO::rowCount() と COUNT()
PDO::rowCount() は、最後の SQL ステートメントによって影響を受ける行数。返される行数と必ずしも同じであるとは限りません。一方、COUNT() はクエリ条件を満たす行数を具体的に取得します。
MySQL サーバーは内部的に COUNT() と PDO::rowCount() を別々に処理します。 COUNT() はカウント結果のみにメモリを割り当てますが、PDO::rowCount() はメモリを割り当てて結果セット全体のフェッチの準備をしますが、これには追加のオーバーヘッドが伴います。
一般に、SQL で COUNT() を使用します。クエリは、MySQL での処理を最適化するため、PDO::rowCount() を使用するより効率的です。
COUNT(*) と COUNT(id)
を使用する場合COUNT(*) と COUNT(id) は、通常、パフォーマンス上の理由から前者が推奨されます。
COUNT(*) は、NULL 値を持つ行を含むすべての行の数を取得します。 COUNT(id) は、id カラムが NULL 以外の値を持つ行のみをカウントします。
MySQL には、COUNT() を COUNT(id) よりも効率的に評価できる最適化機能があります。これは、ワイルドカード () が、テーブルから実際のデータを取得する必要はなく、行数のみを取得する必要があることを示しているためです。
結論
PHP で PDO を使用して行をカウントするときに最適なパフォーマンスを得るには、SQL クエリで PDO::rowCount() の代わりに COUNT() を使用することをお勧めします。さらに、COUNT() と COUNT(id) のどちらかを選択する場合、MySQL の最適化のため、通常は COUNT(*) が優先されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3