一般社団法人 全国個人事業主支援協会

COLUMN コラム

前回の続き。

ヒント句でチューニングする時は困ったらFULLスキャンとハッシュ結合(その1)

 

前回は概要的なお話で、じゃあ実際現場でどんなヒント句を使うことがあるの?

っていうのが今回のお話。

 

1.スキャン方法

大きく3つあります。

フルスキャン、ハッシュスキャン、インデックススキャン。

 

インデックスは更に細かく使い分けができるようですが、実際の

現場では全然使いません。

フルスキャンとハッシュスキャンの2種類を覚えておけば十分です。

 

更に突っ込んで言うと、大量データ等を扱うことによって

チューニングが必要になるデータは大体最初ハッシュスキャンで

結合されていることが多いので、フルスキャンをヒント句として

設定してあげるといいです。

 

書き方は以下の通り。

/*+ FULL */

 

2.結合方法

大きく2つあります。

ネステッドループ結合、ハッシュ結合。

 

こちらも、大体チューニングが必要になる程処理が遅い時は

ネステッドループ結合されています。

なので、ハッシュ結合に変えてあげればOK。

 

書き方は以下の通り。

/*+ HASH(A, B) */

※A, Bにはテーブルの別名(エイリアス)

 

3.その他(結合順・パラレル)

データ量が少ないテーブルから結合した方が全体の処理速度が上がることが

多々あります。そう言う時は、結合順を指定できるLEADINGを使用します。

 

書き方は以下の通り。

/*+ LEADING(C, B, A)*/

※A, B, Cはテーブルの別名(エイリアス)

 

他にも、パラレルを用いて1つの処理を平行処理してあげるように

指定することで、処理速度を向上させることができるので

チューニングの際には検討してみてください。

 

4.まとめ

チューニングで困った時は、まずフルスキャン&ハッシュ結合

全部まとめて書くとこんな感じ!!

/*+ FULL(B, C) LEADING(C, B, A) HASH(B, C) */

 

安易ではあるものの、とっかかりとしては良いので技術初心者の方は

ぜひこれだけでも頭の片隅に置いておいて下さい。

 

以上!

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア