INDEX コマンド

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

構文

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

引数

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

Note

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

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

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

Idxfilename
Idx インデックスファイルを作成します。 インデックスファイルには、既定の拡張子 idx が付けられます。

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

複数入力の複合インデックスファイルは、常に圧縮されます。 複合インデックスファイルの作成時にコンパクトを含める必要はありません。 複合インデックスファイルの名前には、拡張子として拡張子が付けられます。

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

構造的複合インデックスファイル省略可能なCdxfilename句を除外することで、タグTagNameを含む構造の複合インデックスファイルを作成できます。 構造の複合インデックスファイルは、常にテーブルと同じ基本名を持ち、テーブルを開くと自動的に開きます。

Nonstructural 複合インデックスファイルタグのTagNameの後にcdxfilenameを含めることによって、nonstructural 複合インデックスファイルを作成できます。 構造的な複合インデックスファイルとは異なり、nonstructural 複合インデックスファイルは、使用中の INDEX 句を使用して明示的に開く必要があります。

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

Lexpressionの場合
フィルター式の Lexpression に適合するレコードだけを表示およびアクセスに使用できるようにする条件を指定します。インデックスキーは、フィルター式に一致するレコードについてのみ、インデックスファイルに作成されます。

Visual FoxPro Rushmore テクノロジによってインデックスが最適化します...Lexpression が最適化できない式の場合は、lexpressionコマンド。 最適なパフォーマンスを得るには、FOR 句で最適化できる式を使用します。

CD-R
圧縮された idx ファイルを作成します。

つく
Cdx ファイルの昇順を指定します。 既定では、. cdx タグは昇順で作成されます。 (インデックスファイルの順序のリマインダーとして、昇順を含めることができます)。 テーブルには、降順でインデックスを付けることができます。

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

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

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

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

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

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

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

注釈

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

インデックスの種類

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

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

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

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

Note

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

Compact をインクルードして、圧縮された idx インデックスファイルを作成します。 複合インデックスファイルは常に圧縮されます。

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

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

ユーザー定義関数

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

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

参照

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