SQL_CALC_FOUND_ROWS
LIMIT
を使用している場合にのみ役立ちます 句ですが、LIMIT
がないと見つかった行数を知りたいです。 。
これがどのように機能するかを考えてください:
SELECT SQL_CALC_FOUND_ROWS * FROM Users;
データベースにテーブル内のすべてのデータを取得/解析するように強制し、それを破棄します。どの行も取得しない場合でも、DBサーバーは、データが必要であると想定して、ディスクから実際のデータのプルを開始します。
人間の言葉で言えば、あなたはスーパー食料品店の全内容を購入しましたが、レジ係のスタンドからガムのパックを除いてすべてを捨てました。
一方、実行中:
SELECT count(*) FROM users;
DBエンジンに、行数を知りたいが、実際のデータについてはあまり気にしないことを知らせます。ほとんどのインテリジェントDBMSでは、エンジンは、ディスク上の行データに触れることなく、テーブルのメタデータからこのカウントを取得するか、テーブルの主キーインデックスを簡単に実行できます。