Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

クラスへのインデックスの追加

この章では、永続クラス定義にインデックス定義を追加する方法と編集する方法を説明します。

インデックス定義では、Caché クラス・コンパイラに 1 つまたは複数のプロパティのインデックスを作成するように指定します。インデックスは通常、SQL クエリの効率を向上するために使用されます。

インデックスをクラス定義に追加するには、以下の 2 つの方法があります。

  • クラス・エディタを使用して、クラス定義を編集する方法

  • 新規インデックス・ウィザードを使用する方法

クラス・エディタを使用してインデックスを追加するには、クラス・エディタの空の行にカーソルを置き、インデックス宣言を入力します。

Index NameIndex On Name;

また、既存のインデックス宣言をコピーして貼り付け、それを編集することもできます。

インデックス定義の詳細は、"Caché クラス定義リファレンス" のリファレンス “クラス定義” にある “クラス定義” を参照してください。

新規インデックス・ウィザード

[クラス]→[追加]→[インデックス] を使用して、新規インデックス・ウィザードを起動します。または、クラス・インスペクタで右クリックして [インデックスの追加] を選択するか、ツールバーから [新規インデックス] アイコン generated description: newindexicon を選択することもできます。

新規インデックス・ウィザードでは、情報の入力が促されます。終了するには [完了] を選択します。指定していない情報には既定値が設定されます。

名前および説明ページ

新規インデックス・ウィザードでは、以下の情報の入力が促されます (これらの値は後で変更できます)。

インデックス名

(必須) 新規インデックスの名前。これは、有効なインデックス名である必要があります。定義済みの既存のインデックスと同じ名前を付けることはできません。

有効な名前に関する説明は、"Caché オブジェクトの使用法" の "Caché クラス" の章を参照してください。

説明

(オプション) 新規インデックスに関する説明。この説明は、クラス・ドキュメントがオンライン・クラス・ライブラリ・ドキュメントで表示されるときに使用されます。

説明には、HTML フォーマット・タグを記述することもできます。詳細は、"Caché オブジェクトの使用法" の “クラスの定義とコンパイル” の章の “クラス・ドキュメントでの HTML マークアップの使用” を参照してください。

インデックス・タイプ・ページ

Caché は以下のインデックス・タイプをサポートしています。

通常インデックス

通常インデックスは、プロパティ値のインデックス作成に使用します。以下のオプションの 1 つを選択することで、通常インデックスを詳細に定義できます。

ユニーク・インデックス このインデックスに関連する一連のプロパティは、このクラスのオブジェクトのエクステント内で一意である、結合された値を持つ必要があります。
IDKEY このインデックスに関連する一連のプロパティは、オブジェクト ID の作成に使用します。オブジェクト ID は、データベースにこのクラスのインスタンスを保存するのに使用されます。オブジェクトが一度保存された後は、IDKEY 定義の一部であるプロパティ値を変更することはできません。IDKEY は、プロパティが一意であることを意味しています (ユニーク・インデックスと同様)。
SQL 主キー このインデックスに関連する一連のプロパティは、このクラスに投影された SQL テーブルの SQL 主キーとして報告されます。SQL 主キーは、プロパティが一意であることを意味しています (ユニーク・インデックスと同様)。
エクステント・インデックス

エクステント・インデックスは、オブジェクトの複数のクラス・エクステント内で、特定のクラスに属しているオブジェクトを記録するために使用します。これは、追加の属性を指定できない点で、通常インデックスとは異なります。

データベース内でのインデックスの物理的な実装方法を選択することもできます。

標準インデックス

このインデックスは、指定されたプロパティでの従来のクロス・インデックスです。

ビットマップ・インデックス

ビットマップ・インデックスは、指定したインデックス値に対応する一連のオブジェクト ID 値の圧縮表現を使用します。詳細は、"Caché SQL 最適化ガイド" の "ビットマップ・インデックス" を参照してください。

ビットスライス・インデックス

ビットスライス・インデックスは、合計や値域条件など、特定の式について非常に高速の評価を有効にする特殊な形式のインデックスです。ビットスライス・インデックスは現在、特定の Caché SQL クエリで自動的に使用されています。Caché SQL の今後のバージョンでは、追加のクエリを最適化するためにビットスライス・インデックスをさらに活用する予定です。

インデックス・プロパティ・ページ

インデックス・プロパティのページでは、インデックスを基にした 1 つ、または複数のプロパティのリストを入力できます。各プロパティで、既定の照合関数をオーバーライドできます。既定の照合関数は、照合関数のすべてのパラメータと、インデックス内に保存された値を変換するために使用されます。

Note:

重要 — IDKEY インデックスによって使用されるどのプロパティの値においても、そのプロパティが永続クラスのインスタンスへの有効な参照でない限り、連続する 2 つの垂直バー (||) は使用しないでください。この制限は、Caché SQL のメカニズムが動作するための方法に起因しています。IDKey プロパティ で || を使用すると、予測できない動作が起こる可能性があります。

インデックス・データ・ページ

インデックス・データ・ページでは、プロパティのデータのコピーをインデックスに保存するかどうかを指定します。

ビットマップ・インデックスでは、データ値のコピーを保存することはできません。

新規インデックス・ウィザード実行の結果

新規インデックス・ウィザードの実行後、クラス・エディタ・ウィンドウは更新され、新規のインデックス定義が表示されます。以下に例を示します。

/// This is a Person class
class MyApp.Person extends %Persistent 
{

Property Name As %String;

Index NameIndex On Name;
}

インデックス定義を編集するには、クラス・エディタまたはクラス・インスペクタを使用できます。

インデックスの配置

インデックス定義をクラスに追加し、それをコンパイルした後、管理ポータル (インデックス構築) の [インデックス再構築] を使用して、インデックスを生成 (データを挿入) できます。

スタジオでは、データがインデックスに自動的に挿入されません。

FeedbackOpens in a new tab