特殊なテーブル
SQL Server には、標準的な役割を果たす基本的なユーザー定義のテーブル以外に、データベース内で特別な目的で使用される次のようなテーブルがあります。
パーティション テーブル
一時テーブル
システム テーブル
幅の広いテーブル
パーティション テーブル
パーティション テーブルはデータが行方向に分割されているテーブルで、パーティションがデータベースの複数のファイル グループに分散される場合もあります。大きなテーブルやインデックスをパーティション分割すると、コレクション全体の整合性を維持しながら、データのサブセットに対するアクセスや管理を迅速かつ効率的に行うことができるので、大きなテーブルやインデックスを管理しやすくなります。OLTP システムから OLAP システムへのデータの読み込みなどの操作は、以前のリリースでは数分から数時間かかっていましたが、パーティション分割のシナリオでは、ほんの数秒で実行されるようになります。メンテナンス操作も、データのサブセットに対して実行することにより、テーブル全体ではなく必要なデータのみを対象にできるので効率化されます。
テーブルが非常に大きいか、大きくなると予想されるとき、次のいずれかに当てはまる場合はパーティション分割が効果的です。
さまざまな用途で使用されるデータが大量にテーブルに含まれている場合や、含まれることが予想される場合。
テーブルに対するクエリまたは更新が意図どおり実行されない場合や、メンテナンス コストがあらかじめ定めたメンテナンス期間を超えている場合。
制約、デフォルト、ID 値、タイムスタンプ値、トリガ、インデックスなど、標準的なテーブルのデザインおよびクエリに関連するすべてのプロパティおよび機能が、パーティション テーブルでもサポートされます。したがって、あるサーバーのローカルにパーティション ビューを実装する場合、代わりにパーティション テーブルを実装できます。パーティション テーブルの理解、デザイン、および実装に役立つ情報の詳細については、「パーティション テーブルとパーティション インデックス」を参照してください。
一時テーブル
一時テーブルには、ローカル一時テーブルとグローバル一時テーブルの 2 種類があります。ローカル一時テーブルは、そのテーブルを最初に作成または参照した SQL Server インスタンスへの接続と同じ接続が維持されている間に、テーブルの作成者だけが見ることができます。ユーザーが SQL Server インスタンスを切断するとローカル一時テーブルは削除されます。グローバル一時テーブルは、いったん作成されると、任意のユーザーが任意の接続で見ることができます。テーブルを参照しているすべてのユーザーが SQL Server インスタンスを切断すると削除されます。
一時テーブルの詳細については、「テーブルの作成と変更の基礎」を参照してください。
システム テーブル
SQL Server では、サーバーの構成とすべてのテーブルの構成を定義したデータが、システム テーブルという特殊なテーブル セットに格納されます。ユーザーはマイクロソフト カスタマー サービスの指示の下でのみ使用できる DAC (専用管理者接続) を使用する場合を除き、システム テーブルに対して直接クエリおよび更新を実行しないでください。詳細については、「専用管理者接続の使用」を参照してください。システム テーブルは、SQL Server が新しいバージョンになると変更されるのが普通です。システム テーブルを直接参照するアプリケーションは、新しいバージョンの SQL Server にアップグレードする前に、場合によっては別のバージョンのシステム テーブルに書き直す必要があります。システム テーブル内の情報は、カタログ ビューから入手できます。詳細については、「システム テーブル (Transact-SQL)」を参照してください。
重要 |
---|
SQL Server 2008 では、旧バージョンとの互換性のために SQL Server 2008 データベース エンジン システム テーブルを読み取り専用ビューとして実装しています。読み取り専用のシステム テーブルのデータを直接操作することはできません。SQL Server のメタデータにはカタログ ビューを使用してアクセスすることをお勧めします。 |
幅の広いテーブル
幅の広いテーブルとは、列セットが定義されているテーブルのことです。幅の広いテーブルでは、スパース列を使用して、テーブルに持たせることができる列の合計数が 30,000 まで増加します。インデックスと統計情報の数も、それぞれ 1,000 と 30,000 に増加します。幅の広いテーブルの最大行サイズは 8,019 バイトです。そのため、特定の行のデータの大部分を NULL にする必要があります。幅の広いテーブルを作成するか、テーブルを幅の広いテーブルに変更するには、テーブル定義に列セットを追加します。幅の広いテーブルの非スパース列と計算列の最大数は合わせて 1,024 のままです。
幅の広いテーブルを使用することにより、アプリケーション内に柔軟なスキーマを作成できます。必要な場合はいつでも列を追加したり削除したりすることができます。幅の広いテーブルを使用する場合は、実行時およびコンパイル時に必要なメモリが増加するなど、パフォーマンスに特有の考慮事項があることに注意してください。詳細については、「幅の広いテーブルのパフォーマンスに関する考慮事項」を参照してください。