ホームページ >データベース >mysql チュートリアル >データベーステーブル内の複数の列にわたる一意の組み合わせを効率的にカウントするにはどうすればよいですか?
DocumentId や DocumentSessionId などの複数の列に基づいてテーブルから一意の値をカウントするタスクに直面した場合自然な傾向として、サブクエリ アプローチを採用します。ただし、これによりパフォーマンスの最適化に関する懸念が生じる可能性があります。
サブクエリを使用する代わりに、永続化された計算列を作成する方法もあります。これは、目的の列をハッシュまたは連結することで実現でき、インデックスを作成して統計を構築できる決定的な結果を保証します。
たとえば、問題の列が DocumentId と DocumentSessionId の場合、計算列は次のようになります。 HashValue は、SHA1 やMD5:
ALTER TABLE DocumentOutputItems ADD COLUMN HashValue AS SHA1(DocumentId + DocumentSessionId);
計算列が永続化されてインデックスが作成されると、この列の個別のカウントは目的の結果と等価になります。
SELECT COUNT(DISTINCT HashValue) FROM DocumentOutputItems;
永続化された計算列を使用すると、インデックス作成と統計を活用してパフォーマンスを向上させ、サブクエリの必要性を排除できます。
以上がデータベーステーブル内の複数の列にわたる一意の組み合わせを効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。