質問: いつもお世話になっております。pantheraleoと申します。 SQL Serverにて、CREATE PARTITION FUNCTION を用いてパーティションを分割した場合、 CREATE TABLE文では パーティション名及びパーティションキー列を指定する場合があるかと思いますが、 パーティション名のみ指定し、パーティションキー列を省略すると、どの列の値を基準に分割されるのでしょうか。 (例) CREATE TABLE テーブル名 ( 列名 データ型 ,列名 データ型 , ... ) ON パーティション構成名( パーティションキー列 )← こちらのキー列を省略した場合です。 当方、SQLServer初級者ながら、他社構築のシステムのリバースを行っているのですが、 パーティションを分割しているにも関わらず、どのテーブルの定義を見ても、 キー列を指定しておらず、そもそもなぜ分割しているのかの意図がわかりません。。 (省略した場合は、主キーを基準に分割されるのでしょうか。) どなたかご教授頂けないでしょうか。 宜しくお願い致します。
回答: パーティション分割はパーティション関数で指定されたデータ型、サイズと一致する列を指定する必要がありますので、ご記述頂いた例ですとパーティション分割されないのではないでしょうか。 (必ずしもパーティション関数で指定したデータ型、サイズと一致する列が存在するとは限りませんので) 手元に環境がない為確認できなく申し訳ないのですが、以下のSQLで指定したテーブルのパーティションが確認できるかと思います。 こちらでパーティション分割が行われているかどうか確認頂ければ、意味があるものかどうかわかるのではないかと思います。 ``` SELECT OBJECT_NAME(sp.object_id) as [object_name] , sp.partition_number , sp.rows FROM sys.partitions sp LEFT JOIN sys.indexes as si ON si.object_id = sp.object_id AND si.index_id = sp.index_id WHERE sp.object_id IN (OBJECT_ID(N'dbo.[テーブル名]')) ```