Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan Lambat Menggunakan ORDER BY?

Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan Lambat Menggunakan ORDER BY?

Susan Sarandon
Lepaskan: 2024-12-01 01:05:12
asal
916 orang telah melayarinya

How Can I Optimize Slow Queries Using ORDER BY?

Pengoptimuman Pertanyaan Lambat untuk Operasi ORDER BY

Apabila anda menghadapi masalah pertanyaan lambat semasa menggunakan ORDER BY, anda boleh mempertimbangkan sebab berikut :

1. Indeks tiada atau tidak sesuai

Pastikan indeks telah dibuat untuk lajur yang digunakan oleh ORDER BY. Jika indeks tidak wujud atau tidak sesuai, pangkalan data akan dipaksa untuk melakukan imbasan jadual penuh, dengan ketara mengurangkan prestasi.

2. Pengoptimuman subkueri

Semak pengoptimuman subkueri bersarang dengan teliti. Pastikan subkueri menggunakan indeks yang sesuai dan menggunakan perbandingan kesamaan (=) dalam klausa WHERE.

3. Gunakan LIMIT dengan sewajarnya

Jika pertanyaan hanya perlu mengembalikan sejumlah kecil hasil, gunakan klausa LIMIT untuk mengehadkan bilangan rekod yang dikembalikan. Ini boleh meningkatkan prestasi dengan ketara, terutamanya apabila ORDER BY digunakan pada set data yang besar.

Contoh:

Dalam pertanyaan yang diberikan, prestasi boleh dipertingkatkan dengan mengalihkan subkueri ke pertanyaan luar, menjadikannya jadual terbitan:

SELECT * FROM (
    SELECT
      Course.CourseID,
      Course.Description,
      UserCourse.UserID,
      UserCourse.TimeAllowed,
      UserCourse.CreatedOn,
      UserCourse.PassedOn,
      UserCourse.IssuedOn,
      C.LessonCnt
    FROM
      UserCourse
    INNER JOIN
      Course
    USING(CourseID)
    INNER JOIN
    (
      SELECT CourseID, COUNT(*) AS LessonCnt FROM CourseSection GROUP BY CourseID
    ) C
    USING(CourseID)
    WHERE 
      UserCourse.UserID = 8810
) ORDER BY CourseID
Salin selepas log masuk

Pengoptimuman ini berlaku kerana jadual terbitan diprakira sebelum pertanyaan dilaksanakan, dengan itu mengelakkan kemerosotan prestasi yang berlaku apabila ORDER BY digunakan pada subkueri dalam pertanyaan asal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan Lambat Menggunakan ORDER BY?. 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