SQLのチューニングの件で質問なのですが、
実行計画を取る作業まで行ってデータを出力したのですが
チューニングをする際に主にどこを見て修正対象を決めるのか?
というのがわからないです。教えていただけないでしょうか。
SQLのチューニングを初めて行うのでいまいちやり方がわかりません。
実行計画を取る作業まで行ってデータを出力したのですが
チューニングをする際に主にどこを見て修正対象を決めるのか?
というのがわからないです。教えていただけないでしょうか。
SQLのチューニングを初めて行うのでいまいちやり方がわかりません。
------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 21 | 2975 | 154 (82)| 00:00:02 |
| 1 | SORT UNIQUE | | 21 | 2975 | 154 (82)| 00:00:02 |
| 2 | UNION-ALL | | | | | |
|* 3 | FILTER | | | | | |
| 4 | NESTED LOOPS | | 1 | 145 | 28 (0)| 00:00:01 |
| 5 | TABLE ACCESS BY INDEX ROWID| TBFA004G | 20 | 700 | 8 (0)| 00:00:01 |
|* 6 | INDEX RANGE SCAN | TBFA004G_IX1 | 20 | | 6 (0)| 00:00:01 |
|* 7 | TABLE ACCESS BY INDEX ROWID| TBFA001G | 1 | 110 | 1 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | TBFA001G_PK | 1 | | 0 (0)| 00:00:01 |
|* 9 | INDEX UNIQUE SCAN | TBFA090G_PK | 1 | 16 | 1 (0)| 00:00:01 |
|* 10 | TABLE ACCESS BY INDEX ROWID| TBSA005G | 1 | 18 | 2 (0)| 00:00:01 |
| 11 | NESTED LOOPS | | 484 | 17424 | 21 (5)| 00:00:01 |
| 12 | INDEX FULL SCAN | TBFA090G_IX1 | 1045 | 18810 | 14 (0)| 00:00:01 |
|* 13 | INDEX RANGE SCAN | TBSA005G_PK | 1 | | 1 (0)| 00:00:01 |
|* 14 | INDEX UNIQUE SCAN | TBFA090G_PK | 1 | 16 | 1 (0)| 00:00:01 |
| 15 | NESTED LOOPS ANTI | | 19 | 2698 | 110 (0)| 00:00:02 |
|* 16 | TABLE ACCESS BY INDEX ROWID | TBFA001G | 19 | 2394 | 110 (0)| 00:00:02 |
|* 17 | INDEX RANGE SCAN | TBFA001G_PK | 400 | | 6 (0)| 00:00:01 |
|* 18 | INDEX UNIQUE SCAN | TBFA004G_PK | 1 | 16 | 0 (0)| 00:00:01 |
| 19 | NESTED LOOPS ANTI | | 1 | 132 | 13 (8)| 00:00:01 |
|* 20 | HASH JOIN SEMI | | 1 | 114 | 12 (9)| 00:00:01 |
|* 21 | TABLE ACCESS BY INDEX ROWID| TBFN009G | 2 | 192 | 9 (0)| 00:00:01 |
|* 22 | INDEX RANGE SCAN | TBFN009G_IX2 | 2 | | 7 (0)| 00:00:01 |
|* 23 | TABLE ACCESS FULL | TBSA005G | 40 | 720 | 2 (0)| 00:00:01 |
|* 24 | INDEX RANGE SCAN | TBFA090G_IX1 | 1 | 18 | 1 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
もとの SQL はわかりませんし、Oracle は使ったことがないのですが…
0, 1, 15, 16 のコストが大きいですね。
15 は
1 はソートと UNIQUE ですね。必要な処理だとしたら、高速化は難しいでしょうね。
あとは、得意な方にお任せしましょう。
0, 1, 15, 16 のコストが大きいですね。
15 は
NOT IN
や NOT EXISTS
でしょうか。IN
の後の順序でパフォーマンスが変わることがあります。
1 はソートと UNIQUE ですね。必要な処理だとしたら、高速化は難しいでしょうね。
あとは、得意な方にお任せしましょう。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.09%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
takotakot
2015/05/25 13:34
抽象的なまま話を続けることもできますが、「実行計画を取る作業まで行ってデータを出力したのですが
チューニングをする際に主にどこを見て修正対象を決めるのか? 」が大事なところですよね。どんな SQL を発行しようとして、どんな実行計画が出たのでしょうか。そこがわかれば、具体的な話ができるのではないでしょうか。
tuntun
2015/05/25 13:45
4つのDBを使って3パターンの結果をUNIONで結合したSQLを発行しました。
結果はファイルを追加しますのでそちらを見ていただけないでしょうか。
tuntun
2015/05/25 13:53
この質問に画像、ファイルの添付ができないのですがどうやって挿入するのでしょうか?
takotakot
2015/05/25 13:57
私も、添付できる画像とできない画像がありますね…サイズを小さくするか、文字の形で、を追記して貼り付けるか、してみてはいかがでしょうか。
文字の場合、「コード」扱いにすると、崩れる可能性は減るかもしれません。
tuntun
2015/05/25 14:04
少し見づらいかもしれませんが実行計画を追加しました。