• 締切済み

DB2 INSERT時の格納順序

DB2 UDBで以下のようなINSERT文を発行した場合、 insert into TABLE_A values(行1), (行2), (行3); テーブルへの格納順序が、 行1 行2 行3 のようにならないこともありますか? AIXにDBサーバーがある、 Webアプリケーションからの、 INSERT文です。 ちなみに、 クラスター索引などは 使われていません。 ご教示お願いします。

みんなの回答

noname#182251
noname#182251
回答No.2

#1です。DB2は知らないのでとんでもない勘違いをしているかもしれませんが。 「格納順が違っている」ことを、どのようにして確認しておられるのでしょうか。結局「データを取得」後、表示しているのではないでしょうか? リレーショナルDBは、「指示」が無い限り、出力順(取得順)に関して、何の保証もしない(次回も同じとは限らない)ものと理解しています。 外しているか(^^;

ayumi_kamuro
質問者

お礼

何の保証もしない(次回も同じとは限らない) のですね。 あまり詳しくなかったもので、 格納順が優先されるのだと思っていました。 それというのも、 SQL文のORDER BY句で指定した順番以外の順番が、 該当テーブルをSELECT*(ソートなし)で全件取得した際の結果の順番と、まったく同じだったので。

noname#182251
noname#182251
回答No.1

DB2は知りません(^^; で、リレーショナルDB一般に関していえば、「格納順序」に意味はない(意味を持たせない)と考えています。順序が必要であれば明示的に(フィールドを利用し)書き込むべきと。

ayumi_kamuro
質問者

お礼

ありがとうございます。 アプリケーションでデータを取得する際は、 ソート等を考えれば、 問題ないですよね。 今回、格納順に依存したプログラムが発見され、 修正はともかく、 発生する場合と、しない場合があるということを どう説明しようかと、考えておりました。