COUNT
を使用する 、内部的にサーバーはリクエストを異なる方法で処理します。
COUNT
を実行する場合 、サーバーはカウントの結果を保存するためにメモリを割り当てるだけです。
mysql_num_rows
を使用する場合 、サーバーは結果セット全体を処理し、それらすべての結果にメモリを割り当て、サーバーをフェッチモードにします。これには、ロックなど、さまざまな詳細が含まれます。
次の疑似シナリオのように考えてください。
SELECT COUNT(*)
ボブさん、教室には何人いますか?
mysql_num_rows
ボブさん、教室のすべての人を私に送ってください...私は彼らを数えて自分で人の数を取得します
要約すると、mysql_num_rows
を使用する場合 すべてのレコードをクライアントに転送しているため、クライアントはカウント自体を計算する必要があります。