Jadual PostgreSQL diisih mengikut tarikh/masa, mengendalikan nilai NULL dahulu
Pentadbir pangkalan data selalunya perlu mengisih data dalam susunan tertentu dan PostgreSQL menyediakan pelbagai pilihan untuk menyesuaikan tingkah laku pengisihan. Senario biasa ialah mengisih mengikut medan tarikh/masa sambil mengendalikan nilai NULL mengikut susunan yang dikehendaki.
Masalah: keutamaan nilai NULL
Andaikan anda perlu mengisih jadual dalam tertib menaik mengikut medan tarikh/masa 'last_updated' dan proses rekod dengan nilai NULL dahulu. Cabarannya ialah susunan menaik lalai (ASC) PostgreSQL meletakkan nilai NULL pada penghujung keputusan.
Penyelesaian: Gunakan pengubah suai NULLS FIRST
PostgreSQL menyediakan pengubah suai 'NULLS FIRST |. LAST' untuk ungkapan ORDER BY. Menambah pengubah suai 'NULLS FIRST' pada medan 'last_updated' dalam klausa ORDER BY memastikan rekod dengan nilai NULL muncul sebelum nilai bukan NULL:
<code class="language-sql">... ORDER BY last_updated NULLS FIRST</code>
NULLS TERAKHIR dan sokongan indeks
Untuk pengisihan menurun (DESC), kes penggunaan biasa ialah 'NULLS LAST', yang membalikkan tertib menaik lalai, meletakkan nilai NULL pada permulaan. Untuk mengisih nilai NULL terakhir, gunakan:
<code class="language-sql">... ORDER BY last_updated DESC NULLS LAST</code>
Untuk mengoptimumkan pertanyaan dengan indeks, pastikan indeks sepadan dengan susunan isihan:
<code class="language-sql">CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);</code>
Nota Prestasi
Kedudukan nilai NULL mempengaruhi prestasi pertanyaan. Untuk beberapa rancangan pertanyaan, PostgreSQL cuba menambahkan nilai NULL pada permulaan ('NULLS FIRST') atau penghujung ('NULLS LAST'). Pautan berikut memberikan cerapan tentang kesan prestasi:
Atas ialah kandungan terperinci Bagaimana untuk Memesan Jadual PostgreSQL mengikut Tarikh/Masa, Mengutamakan Nilai NULL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!