ビューのインデックス

データベース管理システムでは、インデックスを使用することでクエリを高速で実行できます。

Virtual DataPort では、(派生ビューではなく) 基本ビューでインデックスを定義できます。これらのインデックスは、ソースですでに定義されているインデックスを表します。

インデックスを定義しても、以下の 3 点の例外を除いて、基盤となるデータベースに実際にインデックスが作成されるわけではありません。

これらの場合、Virtual DataPort では実際にデータベースにインデックスが作成されます。詳細については、「 リモートテーブルまたはサマリーの基盤となるデータベースでのインデックスの作成 」を参照してください。

実行時に、JDBC ドライバーまたは ODBC ドライバーを使用して Virtual DataPort に接続しているクライアントは、API の適切なメソッドを使用してビューのインデックスの情報を取得できます。ビジネスインテリジェンスツールの中には、この情報を使用して、より効率的なクエリを生成するものがあります。

JDBC の基本ビューを扱う場合を除き、ビューのインデックスは、「 基本ビューのインデックスの定義 」の手順に従って手動で定義する必要があります。管理ツールを使用して JDBC の基本ビューを作成する場合は、データベースのテーブルのインデックスが自動的にインポートされます。

インデックスは、それを定義したビューからその派生ビューに伝播します。たとえば、基本ビューに IDX インデックスを定義し、そのビューから選択ビューを作成すると、 IDX インデックスがその選択ビューに伝播します。実行時にクライアントが選択ビューのインデックスを取得する場合は、Virtual DataPort サーバーから IDX インデックスの情報が返されます。

一定の状況下では、インデックスは伝播できません。以下に例を示します。

  • フラット化ビュー

  • 和結合ビュー

  • Group By を使用する派生ビューでは、 GROUP BY 句で指定しているフィールドに対するインデックスのみが伝播します。

ビューのキャッシュが有効で、そのキャッシュモードが [Full] であれば、ビューの派生ビューおよび ODBC クライアントと JDBC クライアントに伝播するインデックスは、[Indexes] タブで定義されているインデックスではなく、「キャッシュインデックス」です。このビューに対するクエリでは、ソースからではなく、必ずキャッシュからデータが取得されるからです。

基本ビューのインデックスの定義

基本ビューでインデックスを宣言するには、以下の手順に従います (派生ビューではインデックスを定義できません)。

  1. [Indexes] タブをクリックします。

    基本ビューが JDBC であれば、そのインデックスは自動的にデータベースからインポートされます (これらのインデックスは斜体で表示されます)。これらのインデックスは編集できますが削除はできません。

    注釈

    基本ビューに対して「ソース更新」 (「 ソース更新 」を参照) を実行すると、Virtual DataPort サーバーによってテーブルのインデックスに関する情報も更新されます。

  2. [Declare index] をクリックして、以下の手順に従います。

Defining a new index for a base view

基本ビューの新しいインデックスの定義


  1. インデックスの名前を入力します。

  2. [Index type] で [Cluster]、[Hash]、または [Other] を選択します。

  3. 一意なインデックスとする場合は [Is unique] をチェックします。

  4. インデックスをビューのプライマリキーにする場合は [Is primary key] をチェックします。

  5. ダイアログの左側に、ビューのフィールドのリストが表示されています。

    このインデックスに属するフィールドを選択して [Add >>] をクリックします。複数のフィールドを一度に選択するには、Ctrl キーまたは Shift キーを押したままで目的のフィールドをクリックします。

    インデックスでフィールドが占める順序を変更するには、そのフィールドの横にあるチェックボックスをチェックして image1 または image2 をクリックします。

    インデックスからフィールドを削除するには、右側のリストでそのフィールドの横にあるチェックボックスをチェックして [<< Remove] をクリックします。

  1. [Ok] をクリックするとインデックスが作成されます。

  2. インデックスを編集するには、そのチェックボックスをチェックして [Edit selected index] をクリックします。

  3. インデックスを削除するには、そのチェックボックスをチェックして [Remove selected index] をクリックします。データベースからインポートされたインデックスは斜体で表示され、削除できません。ただし、それらのインデックスのいずれかを編集すると、そのインデックスを選択して [Remove selected index] をクリックできるようになります。これにより、インデックスの現在の定義が、データベースから取得した定義で置き換えられます。

Indexes of the JDBC base view phone_inc

JDBC の基本ビューのインデックス phone_inc

派生ビューの場合、[Options] ダイアログの [Indexes] タブに、このビューの派生元の基本ビューから伝播したインデックスのリストが表示されます。

リモートテーブルまたはサマリーの基盤となるデータベースでのインデックスの作成

リモートテーブル または サマリー にインデックスを作成するには以下の手順に従います。

  1. ビューを開いて [Options] をクリックします。

  2. [Indexes] タブをクリックします。

  3. [Create index] をクリックして以下の手順に従います。

    1. インデックスの名前を入力します。データベース全体で一意の名前とする必要があります。データベースによっては、別々のテーブルに定義したインデックスであっても、2 つのインデックスを同じ名前にできないことがあります。

    2. 一意なインデックスとする場合は [Is unique] をチェックします。

    3. ダイアログの左側には、ビューのフィールドのリストが表示されています。このインデックスに属するフィールドを選択して [Add >>] をクリックします。複数のフィールドを一度に選択するには、Ctrl キーまたは Shift キーを押したままで目的のフィールドをクリックします。

      インデックスでフィールドが占める順序を変更するには、そのフィールドの横にあるチェックボックスをチェックして image1 または image2 をクリックします。

      インデックスからフィールドを削除するには、右側のリストでそのフィールドの横にあるチェックボックスをチェックして [<< Remove] をクリックします。

    1. [Ok] をクリックするとインデックスが作成されます。

View settings: creating a new index

ビューの設定: 新しいインデックスの作成

インデックスの作成、編集、および削除に必要な権限

基盤となるデータベースでインデックスを作成するには、以下の権限が必要です。

  • JDBC データソースの Virtual DataPort データベースに対する「Connect」権限。

  • JDBC データソースに対する「Execute」権限。

  • 基本ビューの Virtual DataPort データベースに対する「Connect」権限。

  • 基本ビューに対する「Write」権限。

JDBC データソースのユーザーアカウントには、基盤となるデータベースでインデックスを作成するための適切な権限が必要です。