2016-05-04 9 views
2

コレクションの要素の順序を保持するコレクションを格納しようとしています。私はコレクションを反復し、要素を1つずつDBに挿入します。要素を1つずつ取得したいとします。正しい挿入順序で要素を取得できますか?Postgresとoracleは挿入順序を維持していますか?

+3

リレーショナルデータベースの行は**ソートされていません**。定義された順序でそれらを取得したい場合は、 'order by'が必要で、それで注文できる列(例えば、コレクションからのインデックス、自動インクリメント列、またはタイムスタンプ)が必要です –

答えて

2

いいえ、データベーステーブルはヒープ指向です。理論的には単一のライターモードで、すべての行のサイズが等しい場合、"could"が動作します。しかし、いくつかの空き領域をいくつかのページに残して、後で短い行を挿入すると、そのページに配置されます。

したがって、どのデータベースにも挿入オーダーを信頼しないでください。 MySQLを含む。

0

残念ながらそれはありません。 オーダー内の行を取得する場合は、このID列に関するシーケンス(Id列、主キーなど)およびorder by句を使用する必要があります。

Oracleに組み込まれたROWID疑似列には行番号情報が含まれています。しかし、あなたはこれに頼るべきではありません。テーブルは行の移動プロパティを有効にすることができます。

+1

' rowid'はありません** **は「行番号」を含みます。これは、表スペース内の行の物理アドレスです。 –

+0

https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htmを確認することができます。データ・ブロック内の行の位置(最初の行は0) – Mennan

関連する問題