INDEX コマンド

テーブル レコードを論理的な順序で表示およびアクセスするためのインデックス ファイルを作成します。

構文

  
INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName]  
   [FOR lExpression]  
   [COMPACT]  
   [ASCENDING | DESCENDING]  
   [UNIQUE | CANDIDATE]  
   [ADDITIVE]  

引数

eExpression
現在のテーブルのフィールドの名前を含めることができるインデックス式を指定します。 インデックス式に基づくインデックス キーは、テーブル内の各レコードのインデックス ファイルに作成されます。 Visual FoxPro では、これらのキーを使用してテーブル内のレコードを表示およびアクセスします。

注意

推奨されませんが、 eExpression には、メモリ変数、配列要素、または別の作業領域のテーブルのフィールドまたはフィールド式を指定することもできます。 メモ型フィールドは、インデックス ファイル式で単独で使用することはできません。これらは他の文字式と組み合わせる必要があります。 存在しない、または見つからない変数またはフィールドを含むインデックスにアクセスすると、Visual FoxPro によってエラー メッセージが生成されます。

長さが異なるキーを使用してインデックスを作成しようとすると、キーにスペースが埋め込まれます。 可変長インデックス キーは、Visual FoxPro ではサポートされていません。

長さが 0 のインデックス キーを作成できます。 たとえば、インデックス式が空のメモ フィールドの部分文字列である場合、長さ 0 のインデックス キーが作成されます。 長さ 0 のインデックス キーを使用すると、エラー メッセージが生成されます。 Visual FoxPro によってインデックスが作成されると、テーブルの最初のレコードのフィールドが評価されます。 フィールドが空の場合は、長さが 0 のインデックス キーを防ぐために、最初のレコードのフィールドに一時的なデータを入力する必要がある場合があります。

TO IDXFileName
.idx インデックス ファイルを作成します。 インデックス ファイルには、既定の拡張子 .idx が与えられます。

TAG TagName[OF CDXFileName]
複合インデックス ファイルを作成します。 複合インデックス ファイルは、任意の数の個別のタグ (インデックス エントリ) で構成される 1 つのインデックス ファイルです。 各タグは、一意のタグ名で識別されます。 タグ名は、文字またはアンダースコアで始まる必要があり、最大 10 文字、数字、またはアンダースコアの任意の組み合わせで構成できます。 複合インデックス ファイル内のタグの数は、使用可能なメモリとディスク領域によってのみ制限されます。

複数エントリの複合インデックス ファイルは常にコンパクトです。 複合インデックス ファイルを作成するときに COMPACT を含める必要はありません。 複合インデックス ファイルの名前には、.cdx 拡張子が付けられます。

構造と非構造化の 2 種類の複合インデックス ファイルを作成できます。

構造複合インデックス ファイルオプションの OF CDXFileName 句を除外することで、TAG TagName を使用して構造複合インデックス ファイルを作成できます。 構造複合インデックス ファイルは、常にテーブルと同じベース名を持ち、テーブルを開いたときに自動的に開かれます。

非構造化複合インデックス ファイルTAG TagName の後に OF CDXFileName を含めることで、非構造化複合インデックス ファイルを作成できます。 構造複合インデックス ファイルとは異なり、非構造化複合インデックス ファイルは、USE の INDEX 句で明示的に開く必要があります。

複合インデックス ファイルが既に作成されて開かれている場合は、TAG TagName を使用して INDEX を発行すると、複合インデックス ファイルにタグが追加されます。

FOR lExpression
フィルター式 lExpression を満たすレコードのみを表示およびアクセスできる条件を指定します。インデックス キーは、フィルター式に一致するレコードのみに対してインデックス ファイルに作成されます。

Visual FoxPro Rushmore テクノロジは、INDEX ... を最適化します。FOR lExpression コマンド ( lExpression が最適化可能な式の場合)。 最適なパフォーマンスを得る場合は、FOR 句で最適化可能な式を使用します。

COMPACT
コンパクトな .idx ファイルを作成します。

昇順
.cdx ファイルの昇順を指定します。 既定では、.cdx タグは昇順で作成されます。 (インデックス ファイルの順序を示すアラームとして ASCENDING を含めることができます)。テーブルは、DESCENDING を含めることで逆の順序でインデックスを作成できます。

降順
.cdx ファイルの降順を指定します。 .idx インデックス ファイルを作成するときに DESCENDING を含めることはできません。

UNIQUE
特定のインデックス キー値で検出された最初のレコードのみが .idx ファイルまたは .cdx タグに含まれることを指定します。 UNIQUE を使用すると、重複するレコードの表示またはアクセスを防ぐことができます。 重複するインデックス キーを使用して追加されたすべてのレコードは、インデックス ファイルから除外されます。 INDEX の UNIQUE オプションの使用は、INDEX または REINDEX を発行する前に SET UNIQUE ON を実行する場合と同じです。

UNIQUE インデックスまたはインデックス タグがアクティブで、インデックス キーを変更する方法で重複レコードが変更されると、インデックスまたはインデックス タグが更新されます。 ただし、REINDEX を使用してファイルのインデックスを再作成するまで、元のインデックス キーを持つ次の重複レコードにアクセスしたり、表示したりすることはできません。

候補
候補構造インデックス タグを作成します。 CANDIDATE キーワード (keyword)は、構造インデックス タグを作成する場合にのみ含めることができます。それ以外の場合は、Visual FoxPro によってエラー メッセージが生成されます。

インデックス候補タグを使用すると、フィールド内の値の重複や、インデックス式 eExpression で指定されたフィールドの組み合わせを防ぐことができます。 候補という用語は、インデックスの種類を指します。候補インデックスは重複する値を防ぐので、プライマリ インデックスとして "候補" として修飾されます。

Visual FoxPro では、フィールドの候補インデックス タグを作成するか、重複する値が既に含まれているフィールドの組み合わせを作成すると、エラーが生成されます。

添加 物
以前に開いたインデックス ファイルを開いたままにします。 INDEX を使用してテーブルのインデックス ファイルまたはファイルを作成するときに ADDITIVE 句を省略すると、以前に開いたインデックス ファイル (構造複合インデックスを除く) はすべて閉じられます。

注釈

インデックス ファイルを持つテーブル内のレコードは、インデックス式で指定された順序で表示およびアクセスされます。 テーブル内のレコードの物理的な順序は、インデックス ファイルによって変更されません。

インデックスの種類

Visual FoxPro では、次の 2 種類のインデックス ファイルを作成できます。

  • タグと呼ばれる複数のインデックス エントリを含む複合 .cdx インデックス ファイル

  • 1 つのインデックス エントリを含む .idx インデックス ファイル

テーブルで自動的に開かれる構造複合インデックス ファイルを作成することもできます。

注意

構造複合インデックス ファイルは、テーブルを開いたときに自動的に開かれるため、推奨されるインデックスの種類です。

コンパクトな .idx インデックス ファイルを作成するには、COMPACT を含めます。 複合インデックス ファイルは常にコンパクトです。

インデックスの順序と更新

テーブルの表示またはアクセスの順序を制御するインデックス ファイル (マスター インデックス ファイル) またはタグ (マスター タグ) は 1 つだけです。 特定のコマンド (SEEK など) では、マスター インデックス ファイルまたはタグを使用してレコードを検索します。 ただし、テーブルに対する変更が行われると、開いているすべての .idx および .cdx インデックス ファイルが更新されます。

ユーザー定義関数

インデックス式にはユーザー定義関数を含めることができますが、インデックス式ではユーザー定義関数を使用しないでください。 インデックス式のユーザー定義関数では、インデックスの作成または更新にかかる時間が長くなります。 また、ユーザー定義関数がインデックス式に使用されている場合、インデックスの更新が発生しない可能性があります。

インデックス式でユーザー定義関数を使用する場合、Visual FoxPro はユーザー定義関数を検索できる必要があります。 Visual FoxPro がインデックスを作成すると、インデックス式はインデックス ファイルに保存されますが、インデックス式にはユーザー定義関数への参照のみが含まれます。

参照

ALTER TABLE - SQL コマンド
DELETE TAG コマンド
SET COLLATE コマンド
SET UNIQUE コマンド