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