在 PostgreSQL 表中按日期/時間欄位升序排序時,需要優先考慮 NULL 值。此外,非空 last_updated 記錄應在升序排序後緊接在 NULL 值之後。
PostgreSQL 的 ORDER BY
表達式提供 NULLS FIRST | LAST
修飾符來處理這種情況。透過指定 NULLS FIRST
,last_updated 欄位為 NULL 值的記錄將顯示在非 NULL 記錄之前:
... ORDER BY last_updated NULLS FIRST
但是,將 NULLS FIRST
與降序排序 (DESC) 一起使用會傳回相反的結果,NULL 值將出現在最後。要在降序中將 NULL 值放在最後,請使用 NULLS LAST
:
... ORDER BY last_updated DESC NULLS LAST
要使用修改後的排序順序的索引,它應該與索引定義相符:
CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);
雖然 PostgreSQL 可以反向讀取 btree 索引,但建立與排序順序相符的索引效率更高:
CREATE INDEX foo_idx ON tbl (last_updated);
附加清單中 NULL 值的位置會影響查詢效能。有關更多信息,請參閱“視圖對聚合函數的性能影響與結果集限制”。
以上是如何在 PostgreSQL 中按升序日期/時間排序並先將 NULL 值排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!