ホームページ > データベース > mysql チュートリアル > SQL の複数の列にわたる異なる組み合わせを効率的にカウントするにはどうすればよいですか?

SQL の複数の列にわたる異なる組み合わせを効率的にカウントするにはどうすればよいですか?

DDD
リリース: 2025-01-06 01:00:39
オリジナル
674 人が閲覧しました

How Can I Efficiently Count Distinct Combinations Across Multiple Columns in SQL?

複数の列の DISTINCT 値を効率的にカウントする

複数の列にわたる一意の組み合わせの数を決定する必要があるシナリオでは、一般的なこのアプローチは、DISTINCT 句を含むサブクエリを利用することです。ただし、この手法は非効率的な場合があります。ここでは、潜在的な最適化方法を検討します。

提供されたクエリは、「DocumentOutputItems」テーブルから個別の「DocumentId」と「DocumentSessionId」の組み合わせをカウントすることを目的としています。

SELECT COUNT(*) 
FROM (SELECT DISTINCT DocumentId, DocumentSessionId
      FROM DocumentOutputItems) AS internalQuery
ログイン後にコピー

パフォーマンスを向上させるには、問題の列のハッシュまたは連結された組み合わせに基づいて、永続化された計算列を生成することを検討してください。適切なデータベース設定を前提として、この列を作成すると、インデックスを作成し、統計情報を関連付けることができます。

この永続化された計算列を利用することで、派生フィールドに対する DISTINCT カウント操作は、元のクエリと同等の結果を生成するはずです。 。このアプローチにより、サブクエリの必要性がなくなり、効率が向上する可能性があります。以下に例を示します:

ALTER TABLE DocumentOutputItems
ADD DocumentUniqueIndex AS HASHBYTES('MD5', DocumentId + DocumentSessionId) PERSISTED;

SELECT COUNT(DISTINCT DocumentUniqueIndex)
FROM DocumentOutputItems;
ログイン後にコピー

以上がSQL の複数の列にわたる異なる組み合わせを効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート