MySQL クエリ オプティマイザーについて: COUNT(id) と COUNT(*)

WBOY
リリース: 2024-07-18 04:35:10
オリジナル
512 人が閲覧しました

Understanding MySQL Query Optimizer: COUNT(id) vs COUNT(*)

MySQL では、特定のクエリの行数を計算するためにほぼ毎日「COUNT」関数を使用します。パフォーマンスに関するすべての開発者の最大のジレンマは、「COUNT(*)」と「COUNT(id)」のどちらを使用する方が良いかということです。


MySQL オプティマイザー

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!