- PR -

SQLServerパーティションテーブルについて

1
投稿者投稿内容
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-08-20 14:49
SQLServerのパーティションテーブルについての質問なんですが。

SELECT文で主キーを指定した場合の話ですが

 パーティション関数項目も指定した方が高速にアクセスできるの
 でしょうか?それとも主キーだけで十分でしょうか?

SELECT * FROM Order WHERE OrderID=1 AND OrderDate='2008/08/20'

OrderDate='2008/08/20' あると高速でしょうか?

よろしくお願いします。
こばさん
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 147
投稿日時: 2008-08-20 15:39
 Order テーブルの定義が分からないので何とも・・・
 仮に OrderID だけで主キーになっているのであれば、OrderDate の絞込みは不要ですね。

 スピードアップということでしたら、SELECT TOP 1 〜 くらいかな
 あと、排他制御を考慮しなくて良いの(ダーティレコードを読む可能性を容認できる場合)であれば WITH (NOLOCK) 付けると良いでしょう。

SELECT TOP 1 * FROM Order WITH (NOLCOK) WHERE OrderID=1

 ただし、排他制御の要否は十分に検討すべきですが
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-08-20 22:25
すいません。

<補足>
主キーはOrderIDとして記述しています。
OrderDateはパーティショニングキー項目(呼び方が間違っているかもしれませんが)です。

<その他>
Oracleでのパーティショニングアーキテクトの記述は検索できたんですが
OracleではパーティションをSELECT文に指定することができるらしいですが。。。。

<返信>
こばさん、ご指摘であれば、主キー(クラスタドインデックス)から
パーティションインデックス(呼び方が間違っているかもしれませんが)は
すぐに見つかるので指定しなくても良いて事でしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)