LOTUS DOMINO と DB2


索引を使用して DB2 のパフォーマンスを向上させる
索引は、1 つ以上のキーで構成されるセットであり、それぞれの索引は表内の行を指します。索引を使用すると、ポインタを使用してデータへの直接パスを作成することによって、表内の行に効率的にアクセスできるようになります。 索引により、非常に長い順次検索を実行することなくデータ取得が最適化されます。

索引を使用することによって、表スキャンおよびソートという 2 つの操作が IBM(R) DB2 Universal Database(R) Enterprise Server Edition で最適化されます。索引による表スキャンの最適化を理解するために、次の SQL ステートメントがあると想定します。


この検索を解決するために、WHERE 句を満たすデータが探索されます。索引がないと、MyDAV.DAV1 のデータが増えるため、パフォーマンスが直線的に低下します。From しかない索引でも役立ちますが、WHERE 句に #modified 列があるため、行はやはり強制的に読み取られます。この問題を解決するには、索引を使用した 2 つの方法が考えられます。
索引によるソートの最適化を理解するために、次の例を検討します。 次の SQL ステートメントがあると想定します。
(上記の) オプション 1 による索引を使用しないかぎり、ソートが発生します。

次の SQL ステートメントでは、その中の 4 つの列がまったくない索引を用意しないかぎり、これらの列が ORDER BY 句に表示される順によるソートが生成されます。


すべてのソートが非効率的なわけではありません。数百行を返すように、WHERE 句に選択性が十分にある場合は、ソートは許容でき、索引にオーバーヘッドが発生するとは限りません。ソートのコストは、SQL スナップショットのようなツールを使用して分析する必要があります。

SQL (DB2 のモニター) スナップショットについて詳しくは、「データベースのモニタースナップショットを生成する 」を参照してください。

一般的に、SQL (DB2 のモニター) スナップショットを生成し、そのスナップショットに、検索の実行が遅く、次の値の 1 つまたは両方が大きいことが示されている場合には、索引を使用できます。

実行所要時間が最も長い SQL ステートメントがどれかを判断する場合、動的な SQL スナップショットを使用することができます。これらのステートメントが正しいアクセスプランを使用しているかどうかを確認するには (つまり、SQL ステートメントが使用するのは DB2 索引か表スキャンかを判断するには)、DB2 コマンドエディタを使用します。

アクセスプランについて詳しくは、「SQL Assist を使用して SQL ステートメントを作成する」を参照してください。

索引を使用して自動的に列を順序付けする索引を使用して列を自動的に順序付けします。 索引では、列名によって、索引キーの一部となる列が特定されます。
1 DB2 コントロールセンターを起動します。

2 [すべてのデータベース] をクリックし、作成した最初の DB2 データベースを探します。デフォルトのデータベース名を変更しなかった場合、名前は DOMINO になります。

3 データベースを開き、[表] をクリックします。

4 列に索引を付ける表を選択し、マウスを右クリックします。

5 [索引の作成] を選択します。[索引の作成] ダイアログボックスが表示されます。


6 新しいソート順を確立する列を選択し、[>] ボタンをクリックします。選択した列が [選択済み列] リストボックスに移動します。[選択済み列] リストボックスに列が表示される順序は、列が索引に保存される順序です。

7 (省略可能) [ユニーク] チェックボックスをオンにすると、[列の組み込み] リストボックスが有効になります。[列の組み込み] リストボックスを使用して、索引には含めるが一意の索引キーには含めない追加の列を選択します。

メモ [索引の作成] ダイアログボックスについて詳しくは、http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/core/db2idxA.htm の DB2 インフォメーションセンターにアクセスしてください。

8 終了したら [OK] をクリックします。

関連項目