主キーではない列に基づいてテーブルをパーティション化していますか?今日、パーティション列を主キーの一部にする必要があるかどうかについて、いくつかの矛盾する情報を読みました。私の腸はノーと言いますが、私は100%確信していません。だから質問...
まったくない
パーティション分割の最も一般的なシナリオの1つは、PKとはまったく関係のない日付フィールドを使用することです。
たとえば、フィールドOrders
を持つテーブルOrderDate
がある場合、OrderDate
の月と年に基づいてパーティションを作成する可能性が高くなります。
レコードが古くなり、関連性がなくなった場合、それらのパーティションをアーカイブテーブルまたはデータベースに移動して、処理されないようにすることができます。
パーティショニングはほとんどすべてのフィールドで機能しますが、うまく機能するためには、すべてではないにしても、ほとんどのクエリでパーティション化するフィールドを使用する必要があります。パーティションキーを含めない場合、基本的に、複数のテーブル(パーティション)にまたがる高価なテーブルスキャンが行われます。
[〜#〜]編集[〜#〜]
パート2では、私はthink答えも同様です。パーティションキーは、行を配置するパーティションを決定するために使用されますが、インデックスは維持されていないと思います。ただし、バックエンドに統計がある場合があります。
JNKの回答に加えて、おそらくテーブルパーティションとインデックスパーティションの調整について説明している この記事 を読む必要があります。
パーティション分割スキームが主キーの最初の列に正確に従う多くの種類のシナリオがあります。たとえば、ファクトテーブルのスナップショット日付が通常パーティション列と主キーの最初の列であるデータウェアハウスシナリオなどです。
しかし、同様に、OLTP PKがIDENTITYまたは他の代理キーである環境では、これをパーティションに使用しても意味がありません。通常、任意の数でのパーティション分割はあまり役立たないためです。In= OLTPシステムの場合、日付で分割する傾向があります(おそらくPKにはない)が、地域またはある種の組織部門によっても(おそらく、使用していない場合はPKに)代理)。
しかし、それは要件ではありません。
主キー自体の一部ではない場合は、候補キーの一部である必要があります。つまり、パーティションは主キーと一致する必要があります。
したがって、答えは、はい、PKの一部であることが望ましいです。別のキーではない場合でも、PKになるのに十分なだけの優れたキーです。