はじめに
自分で書いたクエリからテーブルを作成しましたが、SSMSで生成したクエリと差があったので調べてみました。
シンプルにテーブルを作ってみます。
CREATE TABLE m_code (
id INT,
name NVARCHAR(20)
)
SSMSから作成したテーブルのクエリを生成します。
CREATE TABLE [dbo].[m_code](
[id] [int] NULL,
[name] [nvarchar](20) NULL
) ON [PRIMARY]
カラムは指定しないとNULL許容型になります。
これは「そうなんだね」という感じですが…
ON [PRIMARY] って何だろう
ON { partition_scheme | filegroup | "default" }
テーブルが格納されるパーティション構成またはファイル グループを指定します。 partition_scheme を指定すると、テーブルはパーティション テーブルとなり、各パーティションは partition_scheme で指定した 1 つ以上のファイル グループに格納されます。 filegroup を指定すると、テーブルは指定されたファイル グループに格納されます。 ファイル グループがデータベース内に存在している必要があります。 "default" を指定するか、ON をまったく指定しないと、テーブルは既定のファイル グループに格納されます。 CREATE TABLE で指定したテーブルの格納方法を後から変更することはできません。
つまり
- テーブルを指定したファイルグループに作成できる
- 指定しないと既定のファイルグループに作成される
- [PRIMARY]は既定のファイルグループ
ON [PRIMARY] とは
「テーブルをファイルグループ[PRIMARY]に作成する」という意味
※[PRIMARY]は既定のファイルグループなので、指定しなくても結果は同じ
ところで、
ファイルグループ って何だろう
ファイル グループ
プライマリ ファイル グループには、プライマリ データ ファイル、および他のファイル グループに配置されていないセカンダリ ファイルが含まれます。
ユーザー定義のファイル グループを作成して、データベースの管理、データの割り当て、および配置をしやすくするために、データ ファイルをグループ化できます。
たとえば、Data1.ndf、Data2.ndf、Data3.ndf をそれぞれ 3 つのディスク ドライブ上に作成し、ファイル グループ fgroup1 に割り当てることができます。 その後、ファイル グループ fgroup1 にテーブルを作成することができます。 このテーブル内にあるデータに対するクエリが 3 つのディスクにわたって分散されるため、パフォーマンスが向上します。 RAID (Redundant Array of Independent Disks) ストライプ セットにファイルを 1 つ作成しても、同じくらいパフォーマンスを向上させることができます。 ただし、ファイルとファイル グループを使用すれば、新しいファイルを新しいディスクに容易に追加できます。
一言でいうと、ファイルグループとはデータファイルをグループ化したもの