Bagaimana untuk Mengoptimumkan Pertanyaan MySQL dengan OFFSET Besar dalam Klausa LIMIT?

Barbara Streisand
Lepaskan: 2024-11-19 08:57:02
asal
241 orang telah melayarinya

How to Optimize MySQL Queries with Large OFFSET in LIMIT Clause?

Meningkatkan Prestasi MySQL dengan OFFSET Besar dalam Klausa LIMIT

Menghadapi kemerosotan prestasi semasa menggunakan offset yang ketara dalam klausa LIMIT pertanyaan MySQL SELECT ? Isu ini timbul apabila offset, yang dilambangkan dengan 'm,' melepasi ambang tertentu, seperti 1,000,000, mengakibatkan pelaksanaan pertanyaan yang lembap.

Walaupun penting untuk menggunakan klausa LIMIT untuk senario jadual tertentu, ada caranya untuk mengoptimumkan prestasi tanpa menggunakan alternatif seperti penapisan berdasarkan julat ID ('id > 1,000,000 had n').

Mengindeks Pengoptimuman Berasaskan Jadual

Pertimbangkan untuk mencipta jadual pengindeksan yang mewujudkan hubungan berjujukan dengan kunci utama jadual sasaran. Pendekatan pengindeksan ini boleh meningkatkan prestasi pertanyaan dengan ketara.

  1. Buat Jadual Pengindeksan:

    CREATE TABLE seq (
       seq_no int not null auto_increment,
       id int not null,
       primary key(seq_no),
       unique(id)
    );
    Salin selepas log masuk
  2. Isi Urutan:

    TRUNCATE seq;
    INSERT INTO seq (id) SELECT id FROM mytable ORDER BY id;
    Salin selepas log masuk
  3. Pertanyaan Dioptimumkan menggunakan Pengindeksan:
    Untuk mengambil 1000 baris daripada offset 1,000,000:

    SELECT mytable.* FROM mytable INNER JOIN seq USING(id) WHERE seq.seq_no BETWEEN 1000000 AND 1000999;
Oleh memanfaatkan jadual pengindeksan, pertanyaan yang disemak ini memintas pengimbasan berurutan dan mendapatkan semula baris yang dikehendaki dengan cekap berdasarkan offset, meningkatkan prestasi dengan ketara.

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Pertanyaan MySQL dengan OFFSET Besar dalam Klausa LIMIT?. 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