トランザクション・フレックスフィールド索引の例

請求書のヘッダーおよび明細でトランザクション・フレックスフィールド情報を問い合せる場合、自動インボイスの「トランザクション・フレックスフィールド」列に索引を作成します。索引を使用しない場合、「自動インボイスのインポート」プロセスの検証部分のパフォーマンスが遅くなることがあります。

索引の定義

トランザクション・フレックスフィールドのヘッダーおよび明細情報に使用する表および列に、一意でない連結された索引を定義します。次の表に、これらの表および列を示します。

RA_CUSTOMER_TRX_LINES_ALL

interface_line_attribute1-15

RA_CUSTOMER_TRX_ALL

interface_header_attribute1-15

RA_INTERFACE_LINES_ALL

interface_line_attribute1-15

RA_INTERFACE_DISTRIBUTIONS_ALL

interface_line_attribute1-15

RA_INTERFACE_SALESCREDITS_ALL

interface_line_attribute1-15

どの索引を作成する必要があるか判断するには、明細トランザクション・フレックスフィールドを問い合せて、このフレックスフィールドの各コンテキストを確認し、また各コンテキストについて、RA_INTERFACE_LINES_ALL表からインタフェース明細属性列を使用して使用可能になっているセグメントを確認します。

次に、RA_CUSTOMER_TRX_LINES_ALL表およびRA_INTERFACE_LINES_ALL表内の同じインタフェース明細属性列に対して、またRA_CUSTOMER_TRX_ALL表内の同じインタフェース・ヘッダー属性列に対して、一意でない連結された索引を作成できます。

販売実績および会計情報をインポートする場合、RA_INTERFACE_SALESCREDITS_ALL表とRA_INTERFACE_DISTRIBUTIONS_ALL表内の同じインタフェース明細属性列に対して索引を作成します。

トランザクション・フレックスフィールド詳細

INTERFACE_LINE_ATTRIBUTE1から3を使用するトランザクション・フレックスフィールドのコンテキストを設定しています。さらに、RA_INTERFACE_SALESCREDITS_ALL表に販売実績のデータを作成しています。

パフォーマンスを最大にするために、次の4つの表に索引を作成する必要があります。

  • RA_CUSTOMER_TRX_ALL

  • RA_CUSTOMER_TRX_LINES_ALL

  • RA_INTERFACE_LINES_ALL

  • RA_INTERFACE_SALESCREDITS_ALL

作成した索引では、3つの使用可能なセグメントを参照する必要があります。たとえば、RA_CUSTOMER_TRX_LINES_ALL表に作成する索引は次のようになります。

CREATE UNIQUE INDEX index_name ON RA_CUSTOMER_TRX_LINES_ALL
(INTERFACE_LINE_CONTEXT, INTERFACE_LINE_ATTRIBUTE1,
INTERFACE_LINE_ATTRIBUTE2,
INTERFACE_LINE_ATTRIBUTE3);
ノート:

索引内のコンテキスト列は、通常はオプションです。ただし、複数の(3つ以上の)アクティブなコンテキストを使用する場合は、パフォーマンスを向上させるために索引内の最初の列としてコンテキスト列を含める必要があります。

定義されているコンテキストが1つのみの場合は、4つの表のそれぞれにつき1つの索引を作成するだけで済みます。ただし、定義されているコンテキストが複数ある場合は、1つの表につき複数の索引を作成する必要があることがあります。索引をどのように設定するかを決定する際は、次の表にある例を参考として使用してください。

次の表に、3つのコンテキストを含む明細トランザクション・フレックスフィールドを示します。

フレックスフィールドのコンテキスト

使用可能なセグメントに割り当てられた属性列

Context1

Interface_line_attribute1

Context1

Interface_line_attribute2

Context2

Interface_line_attribute1

Context2

Interface_line_attribute2

Context2

Interface_line_attribute3

Context3

Interface_line_attribute3

Context3

Interface_line_attribute9

Context1には2つの属性列、Context2には3つの属性列、Context3には2つの属性列があります。Context1とContext2は、2つの属性列を共有します。

索引の共有

ニーズに最も適した索引の組合せを定義します。前述のセクションでは、表ごとに3つの索引を作成するか、コンテキストごとに1つの索引を作成するか、または2つの索引のみ(Context3とContext1に1つずつ)を作成することができます。後者の場合、Context1とContext2の最初の2つの属性列が同じなので、Context2はContext1と同じ索引を使用します。

つまり、2つ以上のコンテキストで同じまたは類似の属性列を使用している場合は、コンテキストごとに索引を作成するのではなく、オプションで1つの索引を作成することもできます。

Create Index文には次の構文を使用します。

$ sqlplus AR username/AR password
SQL> CREATE [UNIQUE] INDEX index ON
          {Table (column1, column2, ...)
           |CLUSTER cluster}
           |INITRANS n] [MAXTRANS n]
           [TABLESPACE tablespace]
           [STORAGE storage]
           [PCTFREE n]
           [NOSORT];