質問するログイン新規登録

回答編集履歴

1

補足

2018/08/24 22:55

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,6 +1,17 @@
1
+ > ・UPDATE、MERGE、INSERTをする際もINDEXは効いているのでしょうか。
2
+ > ・UPDATE、MERGE、INSERTの際も処理速度は速くなるのでしょうか。
3
+
1
4
  INDEXはWHERE条件やorder by やjoin group byなどで使用され、select だからとかupdateだからというのは関係がありません。
2
5
 
3
6
  大量データを扱ってINSERTするなら、INSERT先のテーブルのINDEXは寧ろ(INDEXを作成するオーバーヘッドが)邪魔です。
4
7
 
5
8
  直接関係しているかどうかですが、MERGEでのINSERTが値そのものならdual表を使用したものになっているかは気になります。
6
- そもそも、データの状況によっては、MERGEを使用するより、INSERTとUPDATEを使い分ける方が高速な場合だってありますからね。
9
+ そもそも、データの状況によっては、MERGEを使用するより、INSERTとUPDATEを使い分ける方が高速な場合だってありますからね。
10
+
11
+ > ・INDEXを作成した後処理をコストを確認しても特にINDEX作成前と変化はありませんでしたが、
12
+ > ヒント句を使用して以下のようにするとINDEXが効きます。なぜですか?
13
+
14
+ 統計情報が正しくなかったり、物理的な記憶域の特性やデータ特性を正しく表現できなかった場合、オプティマイザは正しい判断ができず、最適ではない実行計画を立ててしまいます。
15
+ そこへ最適なものを教えるというのがヒント句ですから。
16
+
17
+ [Oracleのオプティマイザとは何か?~ソースコードを書いているエンジニアが語る](https://blogs.oracle.com/oracle4engineer/oracle-v101)