| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
編集の要約なし
==[[Oracle ]] 10gR2実行計画の確認==[[Oracle]] | {{category [[Category:編集中}}{{category DBパフォーマンス}}]]
===[[SQL Plus]]===
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19207-02/optimops.htm#967766
====実行例====
[[SQL]]> set lin 1000 [[SQL]]> set autotrace trace explain [[SQL]]> select * from oratest.google_content_report
2 left outer join (
3 select proc_time, count(proc_time) ac from oratest.httpd_access_log
------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows [[R]]ows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 581 | 24402 | 1370 (3)| 00:00:17 |
| 1 | SORT ORDER SO[[R]]T O[[R]]DE[[R]] BY | | 581 | 24402 | 1370 (3)| 00:00:17 | |* 2 | HASH JOIN RIGHT OUTER[[R]]IGHT OUTE[[R]]| | 581 | 24402 | 1369 (3)| 00:00:17 | | 3 | VIEW V[[IE]]W | | 31 | 651 | 1366 (3)| 00:00:17 | | 4 | HASH GROUP G[[R]]OUP BY | | 31 | 248 | 1366 (3)| 00:00:17 | | 5 | TABLE ACCESS FULL | HTTPD_ACCESS_LOG [[HTTP]]D_ACCESS_LOG | 155K| 1216K| 1347 (1)| 00:00:17 | | 6 | TABLE ACCESS FULL | GOOGLE_CONTENT_REPORT GOOGLE_CONTENT_[[R]]EPO[[R]]T | 581 | 12201 | 3 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------
---------------------------------------------------
2 - access("REP_DATE[[R]]EP_DATE"="PROC_TIMEP[[R]]OC_TIME"(+))
*[[iSQL Plus から Explain プランを確認]]
===アクセス・パス===
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19207-02/optimops.htm#967766
|表にあるすべての行の読取り、選択基準を満たしていない行のフィルタが実行される
|-
|ROWIDスキャン[[R]]OWIDスキャン|行が含まれているデータファイルおよびデータ・ブロックと該当するブロック内の位置を指定。行のROWIDの特定による行の位置特定は、単一行を取得する最も高速な方法。行が含まれているデータファイルおよびデータ・ブロックと該当するブロック内の位置を指定。行の[[R]]OWIDの特定による行の位置特定は、単一行を取得する最も高速な方法。
|-
|索引スキャン
|-
|サンプル表スキャン
|複合SELECT文からデータのランダムなサンプルを取り出す。文のFROM句にSAMPLE句またはSAMPLE 複合SELECT文からデータのランダムなサンプルを取り出す。文のF[[R]]OM句にSAMPLE句またはSAMPLE BLOCK句が含まれているときに使用。
|-
|}
=====サンプル表スキャン=====
SELECT * FROM F[[R]]OM employees SAMPLE BLOCK (1);
====索引スキャンのタイプ====
=====ブロックのI/O(行ではなく)の想定=====
*Oracleは、ブロック単位でI[[Oracle]]は、ブロック単位でI/Oを実行
*全表スキャンを使用するかどうかのオプティマイザの決定は、行でなくアクセスされるブロックのパーセンテージに影響される
*これを索引クラスタ化係数という
*低いクラスタ化係数は、個々の行が表の少数のブロック内に集中されることを示す。
*高いクラスタ化係数は、個々の行が表の複数のブロックによりランダムに分散されることを示す。
*高いクラスタ化係数の場合はレンジ・スキャンを使用してROWIDで行をフェッチするので、よりコストがかかる。高いクラスタ化係数の場合はレンジ・スキャンを使用して[[R]]OWIDで行をフェッチするので、よりコストがかかる。
=====索引一意スキャン=====
*1つのROWIDしか戻しません。文が単一行にしかアクセスしないことが保証されているUNIQUE制約またはPRIMARY 1つの[[R]]OWIDしか戻しません。文が単一行にしかアクセスしないことが保証されているUNIQUE制約またはP[[R]]IMA[[R]]Y KEY制約が存在する場合
=====索引レンジ・スキャン=====
*境界(両側で境界付き)スキャンまたは非有界(片側または両側で)スキャンとすることができる
*データは、索引列の昇順に戻される。
*同じ値を持つ複数の行は、ROWIDで昇順にソート同じ値を持つ複数の行は、[[R]]OWIDで昇順にソート
=====索引レンジ・スキャン降順=====

案内メニュー