最初の質問:
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(*)を使用します 可能な限り。
出典: