MySQL では、特定のクエリの行数を計算するためにほぼ毎日「COUNT」関数を使用します。パフォーマンスに関するすべての開発者の最大のジレンマは、「COUNT(*)」と「COUNT(id)」のどちらを使用する方が良いかということです。
MySQL オプティマイザーは、特定の SQL クエリを実行する最も効率的な方法を決定する MySQL の重要なコンポーネントです。この部分は、「COUNT」が最も速いというジレンマにおいて重要な役割を果たします。それでは説明しましょう...
「first_name」列にインデックスを持つ「users」テーブルを作成します。
CREATE table users ( id int NOT NULL AUTO_INCREMENT, first_name varchar(256) NOT NULL, PRIMARY KEY (id), INDEX idx_first_name (first_name) );
いくつかの行を追加し、次の 2 つのクエリを実行します。
EXPLAIN SELECT COUNT(id) FROM users;
EXPLAIN SELECT COUNT(*) FROM users;
これら 2 つの SQL クエリを実行すると、同じインデックスが使用されていることがわかります。「COUNT(*)」はまったく遅くありません。MySQL オプティマイザーがこれを担当し、テーブル内のインデックスを検索します。最高のパフォーマンスを発揮します。この場合、両方のクエリは同じインデックスを使用し、MySQL オプティマイザがそのインデックスが最も効率的であると判断したため、両方のクエリは同じ速度でデータを返します。
MySQL Optimizer は、指定されたクエリができるだけ早くデータを返すように、最適なインデックス キーの選択に寄与する多くのパラメーターを考慮します。
「COUNT(*)」の使用は、MySQL オプティマイザーが最も効率的なアプローチを選択できるため、一般的に推奨されますが、「COUNT(column_name)」は、非カウントのみをカウントする必要がある状況で特に役立ちます。特定の列の NULL 値。最適なクエリ パフォーマンスを達成するには、MySQL オプティマイザーの仕組みとインデックスの使用方法を理解することが重要です。
以上がMySQL クエリ オプティマイザーについて: COUNT(id) と COUNT(*)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。