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