Microsoft SQL Server のプライマリーキー(主キー)とは?
Microsoft SQL Server のプライマリーキー(主キー)とは?
Microsoft SQL Server のプライマリーキー(主キー)とは、そのテーブルの各行を一意に特定するためのカラムやカラムのコンビネーションのことで、各テーブルにひとつだけ設定できます。
プライマリーキーをつけるカラムやカラムのコンビネーションは、ユニークで、かつ Null を許容しないカラムでなくてはなりません。
プライマリーキーを設定すると、クラスター化インデックス (clustered index) というインデックが作られ、データはプライマリーキー順に物理的に格納されます。
※ インデックスとはテーブルやビューからの行の取得を高速化するための、キーの構造です。
物理的な順序はひとつしか指定できないので、プライマリーキーは各テーブルにひとつだけしか指定できないということになります。
非クラスター化インデックス (nonclustered index) はひとつのテーブルに複数作ることができますが、実際のデータとは別の構造になっています。
そこにキー情報も保持されていて、キー情報を通じてデータを探すような構造になっています。
ですので、プライマリーキーのカラムを指定してデータを抽出すると、他のカラムを指定してデータを抽出するよりも、速くデータを抽出することができます。
実際はプライマリーキー以外のカラムをクラスター化インデックス (clustered index) に指定することもできますが、他の開発者の混乱をまねくと思います。
また、プライマリーキーなしにテーブルを作ることも可能ですが、プライマリーキーは大事な役割を果たしていて、設定しないとパフォーマンスに悪い影響がでますので、必ずプライマリーキーを設定するようにしましょう。