Rumah >pangkalan data >tutorial mysql >Bagaimanakah Penomboran Keyset Boleh Mengoptimumkan Pertanyaan PostgreSQL dengan Offset Besar?

Bagaimanakah Penomboran Keyset Boleh Mengoptimumkan Pertanyaan PostgreSQL dengan Offset Besar?

Barbara Streisand
Barbara Streisandasal
2025-01-13 19:21:44558semak imbas

How Can Keyset Pagination Optimize PostgreSQL Queries with Large Offsets?

Meningkatkan Prestasi Penomboran PostgreSQL pada Jadual Besar

Mengambil data bernombor daripada jadual PostgreSQL yang besar (berjuta-juta baris) menggunakan OFFSET boleh memberi kesan teruk kepada kelajuan pertanyaan. Artikel ini membentangkan strategi pengoptimuman unggul: penomboran set kekunci.

Penomboran Set Kekunci: Pendekatan yang Lebih Cekap

Penomboran set kekunci mengelakkan perangkap prestasi OFFSET dengan memanfaatkan nilai baris terakhir daripada halaman sebelumnya. Inilah pertanyaannya:

<code class="language-sql">SELECT *
FROM   big_table
WHERE  (vote, id) > (vote_x, id_x)
ORDER  BY vote, id
LIMIT  n;</code>

vote_x dan id_x mewakili baris terakhir vote dan id daripada halaman sebelumnya. Ini membolehkan pangkalan data melangkau baris dengan cekap, meningkatkan prestasi dengan ketara berbanding OFFSET.

Peningkatan Indeks

Untuk prestasi optimum, buat indeks pada lajur yang digunakan dalam klausa WHERE:

<code class="language-sql">CREATE INDEX vote_order_asc ON big_table (vote, id);</code>

Nota Penting:

  • Gabungan (vote, id) mestilah unik untuk memastikan hasil yang konsisten.
  • Arah klausa ORDER BY mesti sepadan dengan arah indeks.
  • Kaedah ini tidak sesuai untuk pertanyaan dengan arah ORDER BY bercampur atau bercanggah.

Bacaan Lanjut:

Atas ialah kandungan terperinci Bagaimanakah Penomboran Keyset Boleh Mengoptimumkan Pertanyaan PostgreSQL dengan Offset Besar?. 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