ホームページ >データベース >mysql チュートリアル >フィルターされたインデックスは SQL Server でどのように条件付き一意制約を強制できますか?

フィルターされたインデックスは SQL Server でどのように条件付き一意制約を強制できますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-10 10:31:22857ブラウズ

How Can Filtered Indexes Enforce Conditional Unique Constraints in SQL Server?

SQL Server のフィルターされたインデックスを使用した条件付き一意制約

データベース設計では、条件付きの一意性制約が必要になる場合があります。つまり、別の列が特定の条件を満たす場合にのみ、列セットに一意性が適用されます。 これは、アクティブなレコードと非アクティブなレコードを管理し、データの整合性を維持する場合に一般的です。 SQL Server のフィルターされたインデックスは、効率的なソリューションを提供します。 フィルターされたインデックスは、フィルター述語によって定義されたテーブルの行のサブセットに一意のインデックスを作成します。

レコードのステータスに基づいた一意性の実装

IDNameRecordStatus 列を持つテーブルを想像してください。 ID (アクティブなレコード) の場合にのみ、(RecordStatus, RecordStatus = 1) に一意の制約が必要です。 フィルタリングされたインデックスはこれを実現します。

<code class="language-sql">CREATE UNIQUE INDEX MyIndex
ON MyTable (ID)
WHERE RecordStatus = 1;</code>

これにより、ID が 1 の場合にのみ RecordStatus の一意性が保証され、同じ RecordStatus = 2 を持つ複数の非アクティブ (ID) レコードが許可されます。

レコードステータスを超えて: 多彩な条件付きの一意性

フィルターされたインデックスはレコードのステータスに限定されません。 これらにより、さまざまな基準に基づいてデータの一意性をきめ細かく制御できるようになり、データの整合性とパフォーマンスが向上します。

フィルタリングされたインデックスの利点

トリガーなどの代替手段と比較して、フィルターされたインデックスには次の利点があります。

  • パフォーマンスの強化: 関連する行のみにインデックスを作成することで、検索と挿入が高速化されます。
  • ストレージの削減: インデックスは必要な行のみをカバーするため、使用されるストレージが少なくなります。
  • メンテナンスの簡素化: データ変更による自動更新により、余分なメンテナンスが不要になります。

概要

SQL Server のフィルターされたインデックスは、条件付き一意制約を強制する堅牢かつ効率的な方法を提供します。 データの整合性、パフォーマンス、ストレージの最適化の間のバランスを提供します。

以上がフィルターされたインデックスは SQL Server でどのように条件付き一意制約を強制できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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