ホームページ  >  記事  >  データベース  >  COUNT(*) と COUNT(column_name): MySQL ではどちらを使用する必要があるか?

COUNT(*) と COUNT(column_name): MySQL ではどちらを使用する必要があるか?

DDD
DDDオリジナル
2024-11-27 14:29:11857ブラウズ

COUNT(*) vs COUNT(column_name): When Should You Use Which in MySQL?

COUNT(*) と COUNT(column_name): MySQL の違いを理解する

MySQL では、COUNT() 関数が便利な機能を提供します。結果セット内の行数をカウントする方法。ただし、この関数には、COUNT(*) と COUNT(column_name) という異なる結果が生じる可能性のある 2 つのバリエーションがあります。これら 2 つのバリアントの区別を理解することは、正確なデータ集計と最適化にとって重要です。

COUNT(*): NULL 値に関係なく行をカウント

COUNT( ) は、結果セット内のすべての行を単純にカウントする単純な関数です。これには、任意の列に NULL 値を含む可能性のある行が含まれます。これは、COUNT() が、データの内容に関係なく、すべてのレコードの合計数を提供することを意味します。

COUNT(column_name): 特定の列内の非 NULL 値のカウント

COUNT() とは対照的に、COUNT(column_name) は特に指定された列内の NULL 以外の値をカウントします。この関数には、column_name の値が null ではない行のみが含まれます。したがって、その列内に NULL 値がある場合、COUNT(column_name) は COUNT() よりも低いカウントを返す可能性があります。

例: 違いのデモ

違いを説明するために、次の表を考えてみましょう。

CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);

次の実行query:

SELECT
    COUNT(*) AS a,
    COUNT(x) AS b,
    COUNT(1) AS c
FROM table1;

は次の結果を返します:

a   b   c
3   2   3

このシナリオでは、COUNT() (列 "a") は 3 行すべてをカウントするため 3 を返します。これには、列「x」に NULL 値が含まれるものも含まれます。一方、COUNT(x) (列 "b") は、列 "x" に NULL 以外の値がある行のみをカウントするため、2 を返します。 COUNT(1) (列 "c") は COUNT() と同等ですが、3 も返します。

COUNT(*) と COUNT(column_name) の違いを理解することで、効果的に次のことが可能になります。 MySQL クエリのデータを集計して分析します。

以上がCOUNT(*) と COUNT(column_name): MySQL ではどちらを使用する必要があるか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。