ビューのインデックス¶
データベース管理システムでは、インデックスを使用することでクエリを高速で実行できます。
Virtual DataPort では、(派生ビューではなく) 基本ビューでインデックスを定義できます。これらのインデックスは、ソースですでに定義されているインデックスを表します。
インデックスを定義しても、以下の 3 点の例外を除いて、基盤となるデータベースに実際にインデックスが作成されるわけではありません。
リモートテーブル: [Options] の [Indexes] タブで [Create indexes] をクリックした場合。
サマリ: [Options] の [Indexes] タブで [Create indexes] をクリックした場合。
キャッシュ済みビュー: [Options] の [Cache] タブで [Create indexes] をクリックした場合。
これらの場合、Virtual DataPort では実際にデータベースにインデックスが作成されます。詳細については、「 リモートテーブルまたはサマリの基盤となるデータベースでのインデックスの作成 」を参照してください。
実行時に、JDBC ドライバーまたは ODBC ドライバーを使用して Virtual DataPort に接続しているクライアントは、API の適切なメソッドを使用してビューのインデックスの情報を取得できます。ビジネスインテリジェンスツールの中には、この情報を使用して、より効率的なクエリを生成するものがあります。
JDBC の基本ビューを扱う場合を除き、ビューのインデックスは、「 基本ビューのインデックスの定義 」の手順に従って手動で定義する必要があります。管理ツールを使用して JDBC の基本ビューを作成する場合は、データベースのテーブルのインデックスが自動的にインポートされます。
インデックスは、それを定義したビューからその派生ビューに伝播します。たとえば、基本ビューに IDX インデックスを定義し、そのビューから選択ビューを作成すると、 IDX インデックスがその選択ビューに伝播します。実行時にクライアントが選択ビューのインデックスを取得する場合は、Virtual DataPort サーバーから IDX インデックスの情報が返されます。
一定の状況下では、インデックスは伝播できません。以下に例を示します。
フラット化ビュー
和結合ビュー
Group By を使用する派生ビューでは、
GROUP BY
句で指定しているフィールドに対するインデックスのみが伝播します。
ビューのキャッシュが有効で、そのキャッシュモードが [Full] であれば、ビューの派生ビューおよび ODBC クライアントと JDBC クライアントに伝播するインデックスは、[Indexes] タブで定義されているインデックスではなく、「キャッシュインデックス」です。このビューに対するクエリでは、ソースからではなく、必ずキャッシュからデータが取得されるからです。
基本ビューのインデックスの定義¶
基本ビューでインデックスを宣言するには、以下の手順に従います (派生ビューではインデックスを定義できません)。
ビューを開いて [Options] をクリックします。
[Indexes] タブをクリックします。
基本ビューが JDBC であれば、そのインデックスは自動的にデータベースからインポートされます (これらのインデックスは斜体で表示されます)。これらのインデックスは編集できますが削除はできません。
注釈
基本ビューに対して「ソース更新」 (「 ソース更新 」を参照) を実行すると、Virtual DataPort サーバーによってテーブルのインデックスに関する情報も更新されます。
[Declare index] をクリックして、以下の手順に従います。

基本ビューの新しいインデックスの定義¶
インデックスの名前を入力します。
[Index type] で [Cluster]、[Hash]、または [Other] を選択します。
一意なインデックスとする場合は [Is unique] をチェックします。
インデックスをビューのプライマリキーにする場合は [Is primary key] をチェックします。
ダイアログの左側に、ビューのフィールドのリストが表示されています。
このインデックスに属するフィールドを選択して [Add >>] をクリックします。複数のフィールドを一度に選択するには、Ctrl キーまたは Shift キーを押したままで目的のフィールドをクリックします。
インデックスでフィールドが占める順序を変更するには、そのフィールドの横にあるチェックボックスをチェックして
または
をクリックします。
インデックスからフィールドを削除するには、右側のリストでそのフィールドの横にあるチェックボックスをチェックして [<< Remove] をクリックします。
[Ok] をクリックするとインデックスが作成されます。
インデックスを編集するには、そのチェックボックスをチェックして [Edit selected index] をクリックします。
インデックスを削除するには、そのチェックボックスをチェックして [Remove selected index] をクリックします。データベースからインポートされたインデックスは斜体で表示され、削除できません。ただし、それらのインデックスのいずれかを編集すると、そのインデックスを選択して [Remove selected index] をクリックできるようになります。これにより、インデックスの現在の定義が、データベースから取得した定義で置き換えられます。

JDBC の基本ビューのインデックス phone_inc
¶
派生ビューの場合、[Options] ダイアログの [Indexes] タブに、このビューの派生元の基本ビューから伝播したインデックスのリストが表示されます。
リモートテーブルまたはサマリの基盤となるデータベースでのインデックスの作成¶
リモートテーブル または サマリ にインデックスを作成するには以下の手順に従います。
ビューを開いて [Options] をクリックします。
[Indexes] タブをクリックします。
[Create index] をクリックして以下の手順に従います。
インデックスの名前を入力します。データベース全体で一意の名前とする必要があります。データベースによっては、別々のテーブルに定義したインデックスであっても、2 つのインデックスを同じ名前にできないことがあります。
一意なインデックスとする場合は [Is unique] をチェックします。
ダイアログの左側には、ビューのフィールドのリストが表示されています。このインデックスに属するフィールドを選択して [Add >>] をクリックします。複数のフィールドを一度に選択するには、Ctrl キーまたは Shift キーを押したままで目的のフィールドをクリックします。
インデックスでフィールドが占める順序を変更するには、そのフィールドの横にあるチェックボックスをチェックして
または
をクリックします。
インデックスからフィールドを削除するには、右側のリストでそのフィールドの横にあるチェックボックスをチェックして [<< Remove] をクリックします。
[Ok] をクリックするとインデックスが作成されます。

ビューの設定: 新しいインデックスの作成¶
インデックスを作成するために、Denodo ではほとんどのシナリオに対応する以下の組み込みステートメントを使用します。
CREATE [UNIQUE] INDEX <indexName> ON <tableName> (<columns>)
デフォルトのステートメントで対応できない特殊な状況の場合は、DDL コマンドをカスタマイズする方法について、「 テーブル作成テンプレートのカスタマイズ 」のセクションを参照してください。
インデックスの作成、編集、および削除に必要な権限
基盤となるデータベースでインデックスを作成するには、以下の権限が必要です。
JDBC データソースの Virtual DataPort データベースに対する「Connect」権限。
JDBC データソースに対する「Execute」権限。
基本ビューの Virtual DataPort データベースに対する「Connect」権限。
基本ビューに対する「Write」権限。
JDBC データソースのユーザーアカウントには、基盤となるデータベースでインデックスを作成するための適切な権限が必要です。