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

Mengapa Nilai OFFSET Tinggi dalam Pertanyaan MySQL Sangat Lambat?

Barbara Streisand
Lepaskan: 2024-12-18 04:01:09
asal
780 orang telah melayarinya

Why Are High OFFSET Values in MySQL Queries So Slow?

Kemerosotan Prestasi Pertanyaan dengan Nilai OFFSET Tinggi dalam MySQL

Pelaksanaan pertanyaan yang perlahan sering dikaitkan dengan penggunaan CPU atau penggunaan memori yang berlebihan. Walau bagaimanapun, dalam kes tertentu, walaupun pertanyaan yang kelihatan tidak berbahaya dengan ofset LIMIT yang tinggi boleh mengakibatkan kesesakan prestasi yang ketara.

Masalah: Meningkatkan Impak OFFSET Kelajuan Pertanyaan

Pertimbangkan senario dengan meja besar yang mengandungi lebih 16 juta rekod. Pertanyaan seperti:

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

melaksanakan jauh lebih cepat daripada:

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

Kedua-dua pertanyaan mendapatkan bilangan rekod yang sama, tetapi nilai mengimbangi 10,000 dalam pertanyaan terakhir merendahkan prestasi.

Memahami Isu

MySQL menggunakan imbasan indeks atau imbasan jadual penuh apabila mendapatkan semula data. Apabila nilai offset digunakan, MySQL mesti mengimbas sebahagian daripada jadual untuk mendapatkan titik permulaan bagi set hasil. Apabila nilai offset meningkat, imbasan jadual menjadi lebih meluas, membawa kepada masa pelaksanaan yang lebih tinggi.

Penyelesaian Pengoptimuman: Elakkan Nilai OFFSET Tinggi

Untuk mengoptimumkan pertanyaan sedemikian, elakkan menggunakan nilai OFFSET yang tinggi. Sebaliknya, pertimbangkan untuk menggunakan pendekatan alternatif:

  1. Gunakan Pertanyaan Tambahan: Daripada menambah OFFSET dengan nilai tetap, tahan ID yang diambil terakhir dan gunakannya sebagai titik permulaan untuk pertanyaan seterusnya. Pendekatan ini menghapuskan keperluan untuk imbasan jadual dan meningkatkan prestasi dengan ketara.
  2. Melaksanakan Paging: Bahagikan set hasil ke dalam halaman dengan saiz yang boleh diurus. Setiap halaman boleh diambil menggunakan nilai OFFSET sifar, memastikan prestasi optimum.

Atas ialah kandungan terperinci Mengapa Nilai OFFSET 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan