Mengoptimumkan Penomboran dalam PostgreSQL: Strategi Mengatasi Isu Prestasi OFFSET
Menggunakan OFFSET
dengan jadual PostgreSQL yang besar selalunya membawa kepada masalah prestasi. Berikut ialah strategi berkesan untuk meningkatkan kecekapan penomboran:
Penomboran Set Kekunci: Memanfaatkan Perbandingan Nilai Baris
Daripada bergantung pada OFFSET
, gunakan perbandingan nilai baris untuk melangkau baris yang lebih cekap. Ini melibatkan pengisihan jadual anda mengikut lajur yang berkaitan dan menggunakan nilai baris terakhir dari halaman sebelumnya sebagai titik permulaan untuk pertanyaan halaman seterusnya.
<code class="language-sql">SELECT * FROM big_table WHERE (vote, id) > (vote_x, id_x) -- Row value comparison ORDER BY vote, id LIMIT n;</code>
Kaedah ini menggunakan indeks dengan cekap pada (vote, id)
untuk menapis hasil.
Pendekatan Nombor Baris Berindeks (Beban Kerja Berat Baca)
Untuk jadual yang digunakan terutamanya untuk membaca, menambah lajur nombor baris diindeks menyediakan cara langsung untuk melangkau baris, menghapuskan keperluan untuk OFFSET
. Nota: Ini tidak sesuai untuk jadual yang kerap dikemas kini.
<code class="language-sql">ALTER TABLE big_table ADD COLUMN row_number INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY; SELECT * FROM big_table WHERE row_number > x LIMIT n;</code>
Pertimbangan Penting:
ORDER BY
anda sejajar dengan arah penomboran.NULL
nilai menggunakan NOT NULL
kekangan atau NULLS FIRST/LAST
untuk mengelakkan tingkah laku yang tidak dijangka.Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Penomboran dalam PostgreSQL untuk Jadual Besar untuk Mengelakkan Bottleneck OFFSET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!