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 ... lExpression が最適化可能な式の場合は、 FOR lExpression コマンド。 パフォーマンスを最大限に高めるには、FOR 句で最適化可能な式を使用します。

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

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

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

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

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

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

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

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

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

注釈

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

インデックスの種類

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

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

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

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

注意

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

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

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

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

ユーザー定義関数

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

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

参照

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