Beim Sortieren nach Datums-/Uhrzeitfeldern in aufsteigender Reihenfolge in einer PostgreSQL-Tabelle müssen NULL-Werte Vorrang haben. Darüber hinaus sollten last_updated-Datensätze ungleich Null unmittelbar nach NULL-Werten in aufsteigender Reihenfolge sortiert werden.
Der ORDER BY
-Ausdruck von PostgreSQL stellt den NULLS FIRST | LAST
-Modifikator zur Verfügung, um diese Situation zu bewältigen. Durch die Angabe von NULLS FIRST
werden Datensätze mit einem NULL-Wert für das Feld „last_updated“ vor Nicht-NULL-Datensätzen angezeigt:
<code class="language-sql">... ORDER BY last_updated NULLS FIRST</code>
Die Verwendung von NULLS FIRST
mit absteigender Sortierung (DESC) liefert jedoch das gegenteilige Ergebnis, NULL-Werte werden zuletzt angezeigt. Um NULL-Werte in absteigender Reihenfolge an letzter Stelle zu setzen, verwenden Sie NULLS LAST
:
<code class="language-sql">... ORDER BY last_updated DESC NULLS LAST</code>
Um einen Index mit der geänderten Sortierreihenfolge zu verwenden, sollte er mit der Indexdefinition übereinstimmen:
<code class="language-sql">CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);</code>
Obwohl PostgreSQL Btree-Indizes umgekehrt lesen kann, ist es effizienter, einen Index zu erstellen, der der Sortierreihenfolge entspricht:
<code class="language-sql">CREATE INDEX foo_idx ON tbl (last_updated);</code>
Die Position von NULL-Werten in der angehängten Liste wirkt sich auf die Abfrageleistung aus. Weitere Informationen finden Sie unter Leistungsauswirkungen von Ansichten auf Aggregatfunktionen und Einschränkungen bei Ergebnismengen.
Das obige ist der detaillierte Inhalt vonWie sortiere ich in PostgreSQL nach aufsteigendem Datum/Uhrzeit mit NULL-Werten zuerst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!