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

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

本連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状で広く使われているOracle9iの機能を基本とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局)

[亀田明裕,株式会社アゲハ]
「連載:Oracle SQLチューニング講座」のインデックス

連載目次

 前回「表の結合を極めるチューニング・テクニック」では、絞り込み条件がない結合を含むSQL、絞り込み条件のある結合を含むSQLについて実例を基に最適な結合方法を説明しました。

 今回は、Oracleの機能である「マテリアライズド・ビュー」「BITMAP JOIN INDEX」「クラスタ」を利用した結合処理に関するチューニング・テクニックについて説明します。

マテリアライズド・ビューを理解する

 結合処理などを含む複雑な検索処理のパフォーマンス向上が求められている場合、マテリアライズド・ビュー(Materialized View:以後、MView)の利用が有効です。MViewには大きく2つの利用方法があり、1つはリモート・データベース上に存在するデータをローカル・データベース上に定期的にコピーする目的で使用され、スナップショットとも呼ばれます。もう1つは、ローカル・データベース上のデータの集計や結合処理を高速化するために使用されます。例えば、日々の売り上げデータが格納された表を集計するMViewを作成しておくことで、売り上げ集計処理を高速化することが可能となります。

図1 MViewの利用方法 図1 MViewの利用方法

 MViewの元となる表データが更新された場合、リフレッシュと呼ばれる処理によって、MViewにその変更が反映されます。リフレッシュには、図2のように毎回すべてのデータを入れ替える完全リフレッシュと、元表への変更履歴を保持するマテリアライズド・ビュー・ログ(Materialized View Log:以降、MViewログ)を利用し、差分のみを反映する高速リフレッシュがあります。

図2 MViewのリフレッシュ動作 図2 MViewのリフレッシュ動作

 Oracle9i以降のバージョンでは、ローカル・データベース内にあるデータを集計、結合したMViewを作成しておき、元となる表データが更新された場合、即時に反映させることも可能です。

 MViewを使用することで、時間のかかる複雑な検索処理を、短時間で処理することが可能となります。今回のテーマは結合ですので、結合を含むMViewに限定し、そのメリットを実行計画、実行統計から確認してみます。AUTOTRACE機能の見方については、第5回「SQLチューニングの基盤となる統計情報」を参照してください。

 以下の図3は、MViewを使用していない場合の実行計画と実行統計になります。

図3 MViewを使用していない場合の実行計画、実行統計 図3 MViewを使用していない場合の実行計画、実行統計(画面をクリックすると拡大します)

 実行計画を見ると、ネステッド・ループ結合とハッシュ結合の2つの結合処理が行われていることが確認できます。また、アクセスブロック数も108603と多くなっています。

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

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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