連載
» 2005年04月21日 00時00分 公開

Oracle SQLチューニング講座(11):Oracleの機能を使って表の結合を高速化する (4/4)

[亀田明裕,株式会社アゲハ]
前のページへ 1|2|3|4       

クラスタを利用する

 あまりなじみのない方もいるかもしれませんが、Oracleにはクラスタというオブジェクトが存在します。クラスタとは、結合処理のパフォーマンスを向上させるために使用されるデータ構造で、複数の表を結合した状態でデータベースに格納します。具体的には、図10のように、同一のキー値(クラスタ・キー)を持つ複数の表のデータが、まとめて同じデータブロックに格納されます。キー値が結合列になっている場合、同じブロックに複数表のデータが格納されているのでI/O減少によるパフォーマンス向上が期待できます。

図10 クラスタの構造 図10 クラスタの構造

 クラスタは、結合処理を最適化するための特殊な構造であり、クラスタ内の単一の表に対する検索処理や、クラスタ内の表に対する更新処理などは、通常の表に比べて遅くなります。このため、結合処理のパフォーマンスが求められており、それらの表が必ず結合して検索される場合に、使用を検討してください。

 以下が通常表に対するSQLとクラスタに対するSQLの実行計画、実行統計になります。

<通常表へのSQL>

図11 通常表の場合の実行計画、実行統計 図11 通常表の場合の実行計画、実行統計(画面をクリックすると拡大します)

<クラスタに対するSQL>

 今回は比較するためにPART表、PARTSUPP表を元に以下のSQLでクラスタを作成しています。

図12 クラスタを使用した場合の実行計画、実行統計 図12 クラスタを使用した場合の実行計画、実行統計(画面をクリックすると拡大します)

 図12の実行計画から、「T_PARTSUPP」表がクラスタにアクセスしていたことが確認できます。また、実行統計から、キー値を同一ブロックに格納するクラスタの方がアクセスブロック数が減少していることが確認できます。


 今回はOracleの機能を利用した結合処理のチューニング・テクニックを解説しました。次回は、更新処理のチューニング手法について説明します。


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。