最初の質問:
count COUNT()
を使用する 、内部的にサーバー(MySQL)はリクエストを異なる方法で処理します。
COUNT()
を実行する場合 、サーバー(MySQL)は、カウントの結果を格納するためにメモリを割り当てるだけです。
$row=$SQL->rowCount();
を使用する場合 サーバー(Apache / PHP)は、結果セット全体を処理し、それらすべての結果にメモリを割り当て、サーバーをフェッチモードにします。これには、ロックなどのさまざまな詳細が含まれます。
PDOStatement::rowCount()
に注意してください 返される行数ではなく、最後のステートメントの影響を受ける行数を返します。関連するPDOStatement
によって実行された最後のSQLステートメントの場合 SELECT
でした ステートメントの場合、一部のデータベースは、そのステートメントによって返される行数を返す場合があります。ただし、この動作はすべてのデータベースで保証されているわけではなく、ポータブルアプリケーションでは信頼できません。
私の分析では、COUNT()
を使用する場合 、$row=$SQL->rowCount();
を使用すると、プロセスはMySQLとPHPの両方に分割されます。 、処理はPHPの方が多くなります。
したがって、COUNT()
MySQLの方が高速です。
2番目の質問:
COUNT(*)
COUNT(id)
よりも優れています 。
説明:
count(*)
mysqlの関数は、値の数を見つけるように最適化されています。ワイルドカードを使用すると、すべての行がフェッチされるわけではありません。カウントを見つけるだけです。したがって、count(*)
を使用します 可能な限り。
出典: