Rumah > pangkalan data > tutorial mysql > Mengapa Nilai OFFSET LIMIT Tinggi dalam Pertanyaan MySQL Sangat Lambat?

Mengapa Nilai OFFSET LIMIT Tinggi dalam Pertanyaan MySQL Sangat Lambat?

DDD
Lepaskan: 2024-12-15 11:14:11
asal
666 orang telah melayarinya

Why Are High LIMIT OFFSET Values in MySQL Queries So Slow?

Kesan LIMIT OFFSET yang Lebih Tinggi pada Prestasi Pertanyaan MySQL

Apabila melaksanakan pertanyaan SELECT dengan klausa LIMIT dan jadual besar, tetapkan nilai tinggi nilai offset boleh memperlahankan masa pelaksanaan pertanyaan secara drastik. Tingkah laku ini amat ketara apabila menggunakan klausa ORDER BY dengan kunci utama.

Contohnya, pertimbangkan jadual yang dipanggil "besar" dengan lebih 16 juta rekod (bersaiz 2GB). Pertanyaan seperti berikut:

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

boleh dilaksanakan dengan lebih pantas berbanding dengan pertanyaan dengan offset yang lebih tinggi, seperti:

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

Kedua-dua pertanyaan mendapatkan bilangan rekod yang sama (30 ), menunjukkan bahawa perbezaan prestasi bukan disebabkan oleh overhed operasi ORDER BY.

Untuk mengoptimumkan pertanyaan, adalah disyorkan untuk meminimumkan penggunaan offset LIMIT tinggi. Sebaliknya, pertimbangkan untuk menggunakan klausa WHERE untuk memilih rekod berdasarkan pengecam yang diketahui, yang akan menghasilkan pengimbangan sifar.

Sebagai contoh, jika matlamatnya adalah untuk mendapatkan 30 baris terkini, pertanyaan berikut boleh digunakan :

SELECT * FROM large WHERE id > last_known_id LIMIT 0, 30
Salin selepas log masuk

Dengan mengekalkan rekod ID terakhir yang diketahui (last_known_id), pendekatan ini membenarkan pertanyaan sentiasa bermula dari offset sifar, meningkatkan prestasi dengan ketara.

Atas ialah kandungan terperinci Mengapa Nilai OFFSET LIMIT Tinggi dalam Pertanyaan MySQL Sangat Lambat?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan