データベースは、複合索引とも呼ばれる索引キーに対して、最大サイズを規定します。
Microsoft SQL Server の場合:
索引キー内のフィールドの最大数は 16 です。
- キュー索引では、フィールドの最大数は 15 です。ワークフロー・システムが 1 つのフィールドを使用します。
- ロスター索引では、フィールドの最大数は 16 です。
- イベント・ログ索引では、ユーザー・フィールドの最大数は 14 です。ワークフロー・システムは、各索引に F_TimeStamp と F_SeqNumber を追加します。
索引キーの最大サイズは 900 バイトです。
複合索引キーのサイズを判別する場合、Microsoft SQL Server はすべての固定列を合計し、それにすべての可変列の最小値を加算して、複合索引が索引の最大許容サイズ内であるかどうかを判別します。ただし、テーブルに既にデータが入っている場合、および列内の既存のデータによって索引の合計バイト数が最大サイズを超える場合は、索引は作成できません。また、索引の作成後にデータが挿入 (または更新) されたことにより、索引の最大値が最大値のサイズを超えると、その時点でエラーが発生します。
例えば、サイズが 500 バイトの column1 とサイズが 500 バイトの column2 から構成される索引を定義できるとします。column1 に 500 バイトのデータを挿入し、column2 にも 500 バイトのデータを挿入すると、エラーが発生します。column1 に 100 バイトのデータを挿入し、column2 にも 100 バイトのデータを挿入した場合は、エラーは発生しません。
Oracle の場合:
索引キー内のフィールドの最大数は 32 です。
- キュー索引では、フィールドの最大数は 31 です。ワークフロー・システムが 1 つのフィールドを使用します。
- ロスター索引では、フィールドの最大数は 32 です。
- イベント・ログ索引では、ユーザー・フィールドの最大数は 30 です。ワークフロー・システムは、各索引に F_TimeStamp と F_SeqNumber を追加します。
索引キーの最大合計サイズは、データベース・ブロック・サイズの 70% から負荷を引いた値です。
SQLPlus でデータベース・データ・ブロック・サイズを判別するには
- sysdba としてログオンします。
- SQL> に、show parameters db_block_size と入力します。
索引キーのサイズを判別する場合、Oracle サーバーは、すべての可変長フィールドの最大定義サイズを合計し、それにすべての固定長フィールドのサイズを加算します。
DB2® の場合:
索引キー内のフィールドの最大数は 64 です。
- キュー索引では、フィールドの最大数は 63 です。ワークフロー・システムが 1 つのフィールドを使用します。
- ロスター索引では、フィールドの最大数は 64 です。
- イベント・ログ索引では、ユーザー・フィールドの最大数は 62 です。ワークフロー・システムは、各索引に F_TimeStamp と F_SeqNumber を追加します。
ユニーク索引キーの最大合計組み合わせ長は 8192 です。