クラス定義でのインデックスの構文
概要
インデックスとは、永続クラスで管理される構造のことです。永続クラスは、クエリおよびその他の関数の最適化に使用することが意図されています。これらのインデックスは、オブジェクトベースの操作と同様、データベースに対して SQL ベースの INSERT、UPDATE、DELETE 演算が実行された場合にも、自動的に維持されます。SQL クエリ・プロセッサは、SQL クエリを作成、実行するときに、利用可能なインデックスを活用します。
インデックス定義は永続クラスに追加できます。他のクラスでは意味がありません。
詳細
インデックス定義の構造は以下のとおりです。
/// description
Index name On property_expression_list [ keyword_list ];
以下は、この指定の説明です。
-
description (オプション) は、クラス・リファレンスでの表示を意図しています。description は既定ではブランクです。 "クラス・ドキュメントの作成" を参照してください。
-
name (必須) はインデックスの名前です。名前はプロパティの名前付け規約に従い、このクラスまたはテーブル内で一意である必要があります。
この名前は、レポート作成、インデックス構築、インデックス削除をはじめとするデータベース管理に使用します。プロパティの名前付け規約については、"クラス・メンバ" を参照してください。クラス定義のインデックス名と対応する SQL インデックス名との関係は、"InterSystems SQL リファレンス" の "CREATE INDEX" を参照してください。
Tip:インデックスをプロパティと容易に区別できるよう、名前付け規約に従うと便利です。例えば、すべてのインデックス名の末尾に IDX を含めることができます。
-
property_expression_list (必須) は、インデックスが基づくプロパティ (複数可) を指定します。さらにこれには各プロパティの照合仕様を含めることもできます。このオプションは、単一のプロパティ式、または括弧で囲んだ複数のプロパティ式のコンマ区切りリストのいずれかにします。
特定のプロパティ式の構成要素は以下のとおりです。
-
インデックスの作成対象のプロパティの名前。
-
オプションの (ELEMENTS) 式または (KEYS) 式。これは、コレクションのサブ値に対するインデックス作成手段となります。
-
オプションの照合式。
詳細は、"インデックスの定義と作成" を参照してください。
-
-
keyword_list (オプション) は、インデックスを詳しく定義したキーワードのコンマ区切りリストです。
すべてのキーワードは、"インデックスの構文とキーワード" を参照してください。
このリストを省略する場合は角括弧も省略します。
例えば、以下のクラス定義は、2 つのプロパティとそれぞれのプロパティに基づくインデックスを定義しています。
Class MyApp.Student Extends %Persistent
{
Property Name As %String;
Property GPA As %Double;
Index NameIDX On Name;
Index GPAIDX On GPA;
}