Oracleにはダイレクト・パス・インサートというINSERTを高速に行う機能がある。それを指示するためのオプティマイザ用のヒントは2種類あり、APPENDとAPPEND_VALUESとがある。文法上の違いだけを見ると、APPENDはINSERT 〜 SELECTに使うもので、APPEND_VALUESはINSERT 〜 VALUESに使用する。しかしながら、ダイレクトパスインサートの動作的に、APPENDは使う機会はあってもAPPEND_VALUESはほとんど無いと思われる。 このエントリでは、理屈の上では無駄(むしろ邪悪)な結果になることをあえて試す。具体的には、下記のようなINSERT文を10万回ほど発行したとき、何が起きるのかを見る。 INSERT /*+ APPEND_VALUES */ INTO A(COLUMN1) VALUES('hoge'); 環境 jdk1.7.0_17