前回の続き。
ヒント句でチューニングする時は困ったらFULLスキャンとハッシュ結合(その1)
前回は概要的なお話で、じゃあ実際現場でどんなヒント句を使うことがあるの?
っていうのが今回のお話。
大きく3つあります。
フルスキャン、ハッシュスキャン、インデックススキャン。
インデックスは更に細かく使い分けができるようですが、実際の
現場では全然使いません。
フルスキャンとハッシュスキャンの2種類を覚えておけば十分です。
更に突っ込んで言うと、大量データ等を扱うことによって
チューニングが必要になるデータは大体最初ハッシュスキャンで
結合されていることが多いので、フルスキャンをヒント句として
設定してあげるといいです。
書き方は以下の通り。
/*+ FULL */
大きく2つあります。
ネステッドループ結合、ハッシュ結合。
こちらも、大体チューニングが必要になる程処理が遅い時は
ネステッドループ結合されています。
なので、ハッシュ結合に変えてあげればOK。
書き方は以下の通り。
/*+ HASH(A, B) */
※A, Bにはテーブルの別名(エイリアス)
データ量が少ないテーブルから結合した方が全体の処理速度が上がることが
多々あります。そう言う時は、結合順を指定できるLEADINGを使用します。
書き方は以下の通り。
/*+ LEADING(C, B, A)*/
※A, B, Cはテーブルの別名(エイリアス)
他にも、パラレルを用いて1つの処理を平行処理してあげるように
指定することで、処理速度を向上させることができるので
チューニングの際には検討してみてください。
チューニングで困った時は、まずフルスキャン&ハッシュ結合!
全部まとめて書くとこんな感じ!!
/*+ FULL(B, C) LEADING(C, B, A) HASH(B, C) */
安易ではあるものの、とっかかりとしては良いので技術初心者の方は
ぜひこれだけでも頭の片隅に置いておいて下さい。
以上!