PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL - Aktualisierung der Tabelle in einer Funktion, die ich erstellt habe, und jetzt hat sich die Reihenfolge der Zeilen in der Tabelle geändert

Eine Tabelle hat keine natürliche Zeilenreihenfolge, einige Datenbanksysteme lehnen Ihre Abfrage tatsächlich ab, wenn Sie kein ORDER BY hinzufügen -Klausel am Ende Ihres SELECT

Warum hat sich die Reihenfolge geändert?

Da die Datenbank-Engine Ihre Zeilen in der physischen Reihenfolge abruft, in der sie aus dem Speicher stammen. Einige Engines, wie SQL Server, können einen CLUSTERED INDEX haben was eine physische Reihenfolge erzwingt, aber es ist immer noch nie wirklich garantiert, dass Sie Ihre Ergebnisse in dieser genauen Reihenfolge erhalten.

Der Clustered Index existiert meist als Optimierung. PostgreSQL hat einen ähnlichen CLUSTER Funktion, um die physische Reihenfolge zu ändern, aber es ist ein schwerer Prozess, der die Tabelle sperrt:http://www.postgresql.org/docs/9.1/static/sql-cluster.html

Wie erzwinge ich eine alphabetische Reihenfolge der Zeilen?

Fügen Sie einen ORDER BY hinzu -Klausel in Ihrer Abfrage.

SELECT * FROM table ORDER BY column