Rumah > pangkalan data > tutorial mysql > Mengapa Prestasi Pertanyaan Didegradasi dengan Offset LIMIT Besar dalam MySQL?

Mengapa Prestasi Pertanyaan Didegradasi dengan Offset LIMIT Besar dalam MySQL?

Barbara Streisand
Lepaskan: 2024-12-20 20:19:20
asal
767 orang telah melayarinya

Why is Query Performance Degraded with Large LIMIT Offsets in MySQL?

Pertanyaan Penurunan Prestasi dengan Peningkatan LIMIT Offset

Pangkalan data sering menghadapi kesesakan prestasi apabila menggunakan LIMIT dengan offset, terutamanya apabila berurusan dengan jadual besar. Isu ini amat ketara dalam MySQL apabila menggunakan klausa LIMIT OFFSET dengan nilai offset yang tinggi dan ORDER BY.

Salah satu contoh sedemikian ialah jadual bernama "besar" dengan lebih 16 juta rekod, menduduki kira-kira 2GB ruang storan. Melaksanakan pertanyaan dengan nilai offset yang rendah:

SELECT * FROM large ORDER BY `id` LIMIT 0, 30
Salin selepas log masuk

selesai dengan ketara lebih cepat berbanding dengan pertanyaan serupa dengan ofset yang lebih tinggi:

SELECT * FROM large ORDER BY `id` LIMIT 10000, 30
Salin selepas log masuk

Walaupun kedua-dua pertanyaan mendapatkan bilangan rekod yang sama ( 30), overhed ORDER BY tidak mengambil kira prestasi perbezaan.

Penyelesaian Pengoptimuman

Untuk menangani isu ini dan meningkatkan prestasi, pendekatan berbeza boleh diguna pakai. Daripada menambah offset dalam gelung untuk mengumpul sejumlah besar data, kami boleh menyimpan ID terakhir set data sebelumnya dan menambahkan syarat WHERE pada pertanyaan berikutnya:

  1. Simpan ID terakhir daripada set data sebelumnya, cth., lastId = 530.
  2. Formatkan semula pertanyaan sebagai berikut:
SELECT * FROM large WHERE id > lastId LIMIT 0, 30
Salin selepas log masuk

Dengan mengekalkan offset sifar dan membuat pertanyaan untuk rekod melebihi ID terakhir yang diketahui, prestasi boleh dipertingkatkan secara drastik.

Atas ialah kandungan terperinci Mengapa Prestasi Pertanyaan Didegradasi dengan Offset LIMIT Besar dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan