MySQLのCOUNT関数

COUNT()関数は、主テーブルの行の数に使用される、主な用途は、COUNT(*)、COUNT(1)とCOUNT(フィールド名)です。

COUNT(*)は、行SQL92標準的な統計の定義の数の構文ですので、MySQLの最適化の多くを作ったので。
MyISAMテーブルは、トランザクションをサポートしていない、ロックはInnoDBは、トランザクションをサポートして行レベルのロックをサポートするロックMyISAMテーブル・レベルです。MyISAMテーブルレベルのロックので、テーブル上の同じ操作がシリアルである、それはテーブル内の行の数は別々にCOUNT(*)クエリ[テーブルレベルロック、なし同時データベース行について記録、MyISAMテーブルの最適化を行いました変更の数は、行数]は正確で取得します。そしてInnoDBは操作のほとんどは、行レベルのロック、テーブル内の行の数は、同時に、キャッシュが記録されていない変更することができるが、テーブル・スキャンの行数は、インデックスポイントInnoDBがクラスタ化および非クラスタ化インデックスのインデックス、ポリ、トランザクションをサポート行のレコードの主キー値が行全体ではなく、クラスタ化インデックスのリーフノードに格納されたリーフノードクラスタインデックスレコードに格納されています。最小非クラスタ化インデックスを選択する際、テーブルをスキャンします。
もちろん、これらの条件にはどこで、団体のお客様のお問い合わせに最適化されていないこと。

(1)のInnoDB COUNT(*)とCOUNTが、同じ効率で達成違いはありません。しかし、COUNT(フィールド名)が全表スキャンを必要とし、そのフィールドはNULLが決定されていない、それはあまり効率的です。

おすすめ

転載: www.cnblogs.com/qiaoqianshitou/p/11725135.html