インデックスをパーティションに配置しないことには利点がありますか?


9

大規模なパーティションOLAPテーブルを管理する特権があります。この表を確認したところ、インデックスの1つがパーティションスキームと一致していないことに気付きました。著者が利用できず、注意深く作成されたGoogle検索で有用な結果が返されなかったため、これが意図的なものか偶発的なものかはわかりません。

SQL Server 2008でインデックスをパーティションアラインしない理由はありますか?


1
たぶん。インデックス統計の使用状況をクエリして、そのインデックスが使用されているかどうかを確認します。その場合は、拡張イベントまたはサーバー側のトレースを使用して、そのインデックスにヒットしているクエリをキャプチャします。パーティションアラインメントインデックスでパフォーマンスが向上する場合は、すばらしいです。そうでない場合は、非整列パーティション索引が実際に必要かどうかを確認してください。そうでない場合は、将来のクエリでそれを利用できるようにするため、とにかくパーティションアラインメントを作成するといいでしょう。もちろん、コスト/労力/停止が高すぎる場合は、そうしないでください。
Ali Razeghi、2015年

私がパーティションテーブルのインデックス作成のベストプラクティスを読んだことから、インデックスをパーティション分割スキームに合わせることができます。この特定のテーブルで、インデックスをパーティション構成に合わせないようにするユースケースを理解したいと思いました。特定の問題を解決しようとしているわけではないので、分析する必要があるクエリがありません。
ロビン

非境界整列インデックスを設計するもう1つの理由は、パーティション化列を含まない一意インデックス(主キーまたは一意制約を含む)です。この場合、インデックスはまったくパーティション化されていないか、別の関数/スキームを使用してパーティション化されている必要があります。
Dan Guzman

回答:


11

パーティションベースオブジェクトの(一意でない)インデックスを分割しないの主な利点は、それが周りに動作することで長年のクエリオプティマイザの制限などの順序付けられたデータ要求に関連するMINMAXまたはTOP (n)クエリ。

パーティション化されたインデックスでは、オプティマイザは通常MINパーティションごとに同じ操作に変換したりMAX、変換したりできません。その後に、パーティションごとの部分集計に対する最終的なグローバル集計が続きます。オプティマイザは代わりに、インデックスのすべてのパーティションをスキャンする実行プランを選択します。これの例外は、集計または最上位の操作がパーティション列に対して指定されている単一のケースです。TOP (n)

整列されていないインデックスを使用しない非常に良い理由もあることに言及する必要があります。非境界整列インデックスを使用することを選択することは、非常に情報に基づいた選択でなければなりません。私は過去に(まれに)自分でそれを実行しましたが、利益が明らかにコストを上回るか、他の合理的な代替手段がなかった非常に特殊な状況で。


問題を説明するItzik Ben-Ganによる記事。


3

非整列索引を必要とするいくつかの制約(例えば、固有)の周りに明らかな問題があります。

それ以外は、アラインされていないインデックスには大きなコストがかかります(主に、多くの並列演算子がパーティションごとにスレッドを実行することを防ぎ、代替案はメモリに負荷がかかります)。Paulによってリストされたケースがあったとしても、私はまだ非整列インデックスに対して助言します。


1
はい。アラインされていないインデックスを選択することは、非常に情報に基づいた選択でなければなりません。私は過去に(まれに)自分でそれを行いましたが、利益がコストを上回った非常に特殊な状況で。
ポールホワイト9

2

非整列インデックスは、パーティションの切り替えであるパー​​ティション分割の主な利点を打ち消します。これに依存せず、他の理由(別のストレージ、読み取り専用パーティション、増分統計など)でパーティション分割している場合は、調整されていないindexexを作成してください。

非整列インデックスは、テーブル全体に一意の制約を適用できるため便利です。また、非境界整列インデックスでは、パーティション化キーを暗黙的なシークプレフィックスにする必要はありません。10000のパーティションがあり、パーティションキーに基づいていないクエリを想像してください。実行プランは、インデックスが調整されている場合、10000のパーティションにシークする必要があります。他の答えには、さらなる例があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.