2016-05-04 6 views
2

Ich versuche eine Sammlung zu speichern (die die Reihenfolge ihrer Elemente erhält). Ich werde die Sammlung iterieren und das Element einzeln in die DB einfügen. Angenommen, ich möchte die Elemente einzeln abrufen. Kann ich die Elemente in der richtigen Reihenfolge abrufen?Kann Postgres und Oracle die Reihenfolge der Anzeigen beibehalten?

+3

Zeilen in einer relationalen Datenbank sind ** nicht ** sortiert. Wenn Sie sie in einer definierten Reihenfolge abrufen wollen, benötigen Sie eine 'Order by' und damit eine Spalte, nach der Sie bestellen können (zB der Index aus der Collection, eine Autoinkrement-Spalte oder ein Timestamp). –

Antwort

2

Nein, Datenbanktabellen sind haufenorientiert. Also theoretisch in einem einzigen Schreibmodus, wenn alle Zeilen von gleicher Größe waren, dann könnte diese "könnte" arbeiten. Wenn Sie jedoch auf einer Seite etwas freien Platz lassen und später eine kürzere Zeile einfügen, wird diese Seite eingefügt.

Also bitte nicht vertrauenswürdig Reihenfolge in jeder Datenbank. Einschließlich MySQL.

0

Leider ist es nicht. Wenn Sie Zeilen in einer Reihenfolge abrufen möchten, sollten Sie eine Sequenz (wie ID-Spalte, Primärschlüssel) und eine Order-by-Klausel in Bezug auf diese ID-Spalte verwenden.

Oracle eingebaute Rowid Pseudo Spalte enthält Zeilennummer Informationen; aber du solltest dich nicht darauf verlassen. Die Tabelle kann die Zeilenbewegungseigenschaft aktivieren.

+1

' rowid' tut ** nicht ** enthalten eine "Zeilennummer". Es ist die physische _Adresse_ der Zeile im Tablespace. –

+0

Sie können überprüfen, https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm: Die Position der Zeile im Datenblock (erste Zeile ist 0) – Mennan

Verwandte Themen