Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memesan Jadual PostgreSQL mengikut Tarikh/Masa, Mengutamakan Nilai NULL?

Bagaimana untuk Memesan Jadual PostgreSQL mengikut Tarikh/Masa, Mengutamakan Nilai NULL?

DDD
DDDasal
2025-01-23 02:28:09887semak imbas

How to Order a PostgreSQL Table by Date/Time, Prioritizing NULL Values?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn