この文書はSQL Server 2005 CTP June/2005時点をベースに記述されています。
パーティション自身についてはSQL:SQL Server 2005 パーティション機能とはに解説してあります。
パーティションを作成する場合にまずはファイルグループとファイルを設定します。その概念自体はSQL:SQL Server 物理配置とファイルグループを参考にしてください。
次にパーティション関数を設定します。
パーティション関数は以下のように設定します。
create partition function PartitionFunc(int) as range left
for values(100, 200, 300)
通常の関数と同様のようでいろいろと書き方があります。
まず引数ですが一つに限られた上、型しか指定しません。
次にレンジ(後述)を指定します。そしてvaluesです。
パーティション関数はあくまでレコードをどのファイルグループに所属させるかを判断する関数です。Valuesはその境目として定義します。100を区切りに前のファイルグループにするか、後ろのグループにするかという意味です。今回の関数は3つ 値を定義してるので、4分割するということを表しています。
ただこのままでは指定した100という値自身が、前のファイルグループに属するのか、後ろのファイルグループに属するのかわかりません。それがレンジです。
left
| id |
1 |
99 |
100 |
101 |
199 |
200 |
201 |
299 |
300 |
301 |
| value |
あ |
い |
う |
え |
お |
か |
き |
く |
け |
こ |
| ファイルグループ |
1 |
1 |
1 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
right
| id |
1 |
99 |
100 |
101 |
199 |
200 |
201 |
299 |
300 |
301 |
| value |
あ |
い |
う |
え |
お |
か |
き |
く |
け |
こ |
| ファイルグループ |
1 |
1 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
4 |
色分けされたグループがファイルグループの単位になります。leftの場合には指定したあたいそのものはleft(前)に属することになり、rightの場合には後ろ側に属することになります。
パーティション関数が定義できたら次はパーティションスキームです。
create partition scheme PartitionScheme
as partition PartitionFunc
To (PartitionFG1, PartitionFG2, PartitionFG3, PartitionFG4)--PartitionFG*はファイルグループ
これはあまり説明の必要もないが、先に定義したパーティション関数と、ファイルグループと結び付けている。
Toの中に定義するファイルグループの数はパーティション関数で定義した数と同じにしておかなければいけない。
--パーティションを利用したテーブルとPKインデックスを作成する
CREATE TABLE [dbo].[PartitionTable](
[ID] [int] NOT NULL,
[VALUE] [nchar](4000) COLLATE Japanese_CI_AS NULL,
CONSTRAINT [PK_PartitionTable] PRIMARY KEY CLUSTERED
(
[ID] ASC
) ON [PartitionScheme]([ID])
) ON [PartitionScheme]([ID])
最後にそれを利用するテーブルを定義する。
どのファイルグループに所属するかを定義すON句の部分がスキーマ(パラメータ)という形式になっている。
応用はまたの機会に
今回利用したSQLのフルセット
00009.txt
パスは各自の環境に合わせて変更して欲しい。