• ベストアンサー

SQL*LoaderとInsertの違いについて

大量データを扱う場合、下記2通りの方法がある事を知りました。どちらが大量データの書き込み処理が早いのでしょうか? (1)SQL*Loaderのダイレクト・パス・ロード (2)insert /*+ append */ によるダイレクト・パス・インサート また、通常のINSERTと比べてどれ位時間短縮されるものか事例等ありましたら目安として教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

どちらの方法も、同じ”理屈”で実装されているので、 性能的な相違は無いと考えて良いと思いますが.. SQL*Loaderは、DBの外側にあるテキストファイルを入力源とし、 insert into ~ は、DBの内側のテーブルを入力源とするので、 適宜使い分けるのがふつうです。 古いオラクルで、ダイレクト・パス・インサートが使えなくて、 ダイレクト・パス・ロードは使える場合もあるので、 そのような場合に、CSV出力&ダイレクト・パス・ロードを選択する ことはありますが.. 基本的に、データの入力源で使い分けるのが正しい使い方です。 >通常のINSERTと比べてどれ位時間短縮 絶対に、ダイレクトパスが速いということはありません。 条件によっては、従来パスに負けるケースもあります。 たとえば、1000万件レコード、10個の索引を持つテーブルに対し、 100件のデータを追加する場合、圧倒的に従来パスが速く終わります。 逆に、100件のレコード、10個の索引を持つテーブルに対し、 1000万件のデータを追加する場合、ダイレクトパスの圧勝でしょう。 なので、目安等の提示はできません。

ZAK123
質問者

お礼

なるぼど、性能面での違いは無く使用用途による使い分けなのですね。ありがとうございましたm(__)m

関連するQ&A