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
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!