2016-05-26 4 views
0

Gerade jetzt, wenn ich eine Tabelle erstellen und tun eineKönnen wir eine Tabelle in Postgres einrichten, um immer zuerst die neuesten Einsätze zu sehen?

select * from table 

ich zuerst die ersten Einsatz Reihen immer sehen. Ich möchte meine neuesten Einsätze zuerst angezeigt bekommen. Ist es möglich, mit minimalen Leistungseinbußen zu erreichen?

+1

Es gibt keine "erste" oder "letzte" Zeile in einer Tabelle. Zeilen in einer Tabelle werden *** NICHT *** sortiert. Der einzige *** Weg, um eine bestimmte Sortierreihenfolge zu erhalten, ist 'ORDER BY' zu verwenden. –

Antwort

1

Ich glaube, dass Postgres verwendet ein internes Feld namens OID, die nach sortiert werden kann. Versuche Folgendes.

select *,OID from table order by OID desc; 

Es gibt einige Einschränkungen dieses Ansatzes wie in SQL, Postgres OIDs, What are they and why are they useful? beschrieben

Anscheinend ist der OID-Sequenz „bedeutet“ wickeln, wenn es 4B 6. im Wesentlichen So übersteigt es ein globaler Zähler ist, die wickeln kann. Wenn es Wrap tut, kann eine gewisse Verlangsamung auftritt beginnen, wenn es verwendet wird und „gesucht“ für eindeutige Werte usw.

Siehe auch https://wiki.postgresql.org/wiki/FAQ#What_is_an_OID.3F

NB - in der neueren Version von Postgres diese veraltet sein könnten (https://www.postgresql.org/docs/8.4/static/runtime-config-compatible.html#GUC-DEFAULT-WITH-OIDS)

Obwohl Sie in der Lage sein sollten, Tabellen mit OID auch in der neuesten Version zu erstellen, wenn die nach https://www.postgresql.org/docs/9.5/static/sql-createtable.html

explizit auf dem Tisch getan erstellen Obwohl das Verhalten, das Sie in der CLI beobachten Nachteile erscheint es ist kein Standard und kann nicht abhängen. Wenn Sie regelmäßig die zuletzt hinzugefügten Zeilen in einer bestimmten Tabelle manuell anzeigen müssen, können Sie ein Zeitstempelfeld oder ein anderes sortierbares Feld hinzufügen und die Abfrage möglicherweise sogar in eine gespeicherte Funktion einbinden. Ich schätze, der Ansatz hängt von Ihrem speziellen Anwendungsfall ab .

+0

Standardmäßig werden Tabellen ohne OID erstellt –

+0

ja - für neuere Version von Postgres, die wahr ist. –

+0

"* neuere *" - bedeutet alles nach 2005 freigegeben –

Verwandte Themen