データベース・エクスポートのインデックス・オプション
インデックス・ダイアログ・ボックスでは、IBM® SPSS® Modeler からエクスポートされたデータベース・テーブルにインデックスを作成することができます。フィールド・セットに含めるフィールドを指定し、必要に応じて CREATE
INDEX コマンドをカスタマイズします。
ダイアログ・ボックスには次の 2 つの部分があります。
- 最上部のテキスト・フィールドは、
CREATE INDEXコマンドの生成に使用するテンプレートを表示し、デフォルトは次の形式となっています。CREATE INDEX <index-name> ON <table-name> - ダイアログ・ボックスの下部にあるテーブルでは、作成する各インデックスの仕様を追加することができます。各インデックスに対しては、インデックス名とフィールドまたは含める列を指定します。ダイアログ・ボックスにより、適切な
<index-name>パラメーターと<table-name>パラメーターが自動的に生成されます。例えば、フィールド empid と deptid に関する単一のインデックスに対して生成された SQL はこのようになります。
CREATE INDEX MYTABLE_IDX1 ON MYTABLE(EMPID,DEPTID)複数のインデックスを生成するために複数の行を追加することができます。独立した
CREATE INDEXコマンドが各行に生成されます。
CREATE INDEX コマンドのカスタマイズ
オプションで、 CREATE INDEX コマンドをすべてのインデックスに対して、または特定のインデックスのみに対してカスタマイズできます。これによって、必要に応じて自由に、固有のデータベースの要件またはオプションを統合し、すべてのインデックスまたは特定のインデックスのみに対してカスタマイズの結果を適用することができるようになります。
- ダイアログ・ボックスの最上部にある 「CREATE INDEX コマンドをカスタマイズ」 を選択し、これ以降追加されるすべてのインデックスに使用するテンプレートを修正します。変更結果は、既にテーブルに追加されているインデックスに対して自動的に適用されます。
- テーブルで 1 つ以上の行を選択し、ダイアログ・ボックスの最上部にある 「選択したインデックスを更新」 をクリックして現在のカスタマイズした結果を選択したすべての行に適用します。
- 各行の 「カスタマイズ」 チェック・ボックスをオンにして、そのインデックスのみに対してコマンド・テンプレートを修正します。
<index-name> パラメーターと <table-name> パラメーターの値は、テーブルの仕様に基づいてダイアログ・ボックスによって自動的に生成されます。これらの値を直接編集することはできません。
BITMAP KEYWORD : Oracle のデータベースを使用中に、テンプレートをカスタマイズして、標準のインデックスではなく、次のようにビットマップ・インデックスを生成することができます。
CREATE BITMAP INDEX <index-name> ON <table-name>
ビットマップ・インデックスは、少数の重複レコード値を持つ列のインデックス生成に役立ちます。生成された SQL はこのようになります。
CREATE BITMAP INDEX MYTABLE_IDX1 ON MYTABLE(COLOR)
UNIQUE キーワード: ほとんどのデータベースは、CREATE INDEX コマンドの UNIQUE キーワードをサポートしています。これは、基本的なテーブルにおける第 1 入力フィールド・キーの制約に類似した、一意性の制約を強制します。
CREATE UNIQUE INDEX <index-name> ON <table-name>
第 1 入力フィールド・キーとして実際に指定されたフィールドに対して、この指定は必要でないことに注意してください。ほとんどのデータベースは、第 1 入力フィールド・キーとして指定されたフィールドのインデックスを、CREATE TABLE コマンド内に自動的に生成します。したがって、これらのフィールドで明示的に生成するインデックスは必要ありません。 詳しくは、データベース・エクスポートのスキーマのオプションのトピックを参照してください。
FILLFACTOR キーワード: 一部のインデックス用の物理パラメーターを精密に調整することができます。例えば SQL Server では、今後テーブルを変更する場合のメンテナンス・コストとのトレードオフを考慮して、(初期作成後に) インデックス・サイズを選択することができます。
CREATE INDEX MYTABLE_IDX1 ON MYTABLE(EMPID,DEPTID) WITH
FILLFACTOR=20
その他のコマンド
- 指定された名前を持つ既存のインデックスがある場合、インデックスの生成は失敗します。失敗は警告として処理され、それ以降のインデックスの生成を許可し、それから、すべてのインデックスを試みた後にメッセージ・ログ内にエラーとして再報告されます。
- 最高のパフォーマンスを得るためには、データがテーブルにロードされた後にインデックスを生成すべきです。インデックスには最低 1 行は組まれていなければなりません。
- ノードを実行する前に、メッセージ・ログ内の生成された SQL をプレビューすることができます。
- データベースに書き込まれる一時テーブル (つまり、ノード・キャッシュが有効なとき) に対しては、第 1 入力フィールド・キーを指定するオプションは利用できません。ただし、データが下流ノードで使用される頻度に合わせて、システムが一時テーブルにインデックスを生成します。例えば、キャッシュされたデータがその後 DEPT 列ごとに結合された場合、キャッシュされているこの列のテーブルをインデックスする意味があります。
インデックスおよびクエリーの最適化
一部のデータベースの管理システムでは、データベースのテーブルの生成、ロード、インデックスの作成が行われた後に、オプティマイザーがインデックスを利用して新規のテーブル上でのクエリーの高速化ができるようになるまで、あるステップが必要になります。例えば Oracle では、コストベースのクエリー・オプティマイザーが、テーブルのインデックスをクエリーの最適化に使用できるようにする前に、テーブルの解析を要求します。Oracle の ODBC プロパティー・ファイル (ユーザーには見えません) には、これを実行する次のようなオプションが含まれます。
# Defines SQL to be executed after a table and any associated indexes
# have been created and populated
table_analysis_sql, 'ANALYZE TABLE <table-name> COMPUTE STATISTICS'
このステップは、Oracle 内にテーブルが生成されるときに必ず実行されます (第 1 入力フィールド・キーまたはインデックスが定義済みか否かにかかわらず)。必要に応じて、その他のデータベース用の ODBC プロパティー・ファイルを同様にカスタマイズすることができます。サポートにお問い合わせください。