Heim > Datenbank > MySQL-Tutorial > Wie kann ich langsame Abfragen mit ORDER BY optimieren?

Wie kann ich langsame Abfragen mit ORDER BY optimieren?

Susan Sarandon
Freigeben: 2024-12-01 01:05:12
Original
917 Leute haben es durchsucht

How Can I Optimize Slow Queries Using ORDER BY?

Langsame Abfrageoptimierung für ORDER BY-Vorgänge

Wenn Sie bei der Verwendung von ORDER BY auf das Problem einer langsamen Abfrage stoßen, können Sie die folgenden Gründe in Betracht ziehen :

1. Index fehlt oder ist ungeeignet

Stellen Sie sicher, dass der Index für die von ORDER BY verwendete Spalte erstellt wurde. Wenn der Index nicht vorhanden oder nicht geeignet ist, muss die Datenbank einen vollständigen Tabellenscan durchführen, was die Leistung erheblich verringert.

2. Unterabfrageoptimierung

Überprüfen Sie die Optimierung verschachtelter Unterabfragen sorgfältig. Stellen Sie sicher, dass die Unterabfrage geeignete Indizes verwendet und in der WHERE-Klausel einen Gleichheitsvergleich (=) verwendet.

3. Verwenden Sie LIMIT entsprechend

Wenn die Abfrage nur eine kleine Anzahl von Ergebnissen zurückgeben muss, verwenden Sie die LIMIT-Klausel, um die Anzahl der zurückgegebenen Datensätze zu begrenzen. Dies kann die Leistung erheblich verbessern, insbesondere wenn ORDER BY auf große Datensätze angewendet wird.

Beispiel:

In einer bestimmten Abfrage kann die Leistung verbessert werden, indem die Unterabfrage in eine äußere Abfrage verschoben und daraus eine abgeleitete Tabelle gemacht wird:

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
Nach dem Login kopieren

Diese Optimierung erfolgt, weil die abgeleitete Tabelle vor der Ausführung der Abfrage vorberechnet wird, wodurch der Leistungsabfall vermieden wird, der auftritt, wenn ORDER BY auf eine Unterabfrage in der ursprünglichen Abfrage angewendet wird.

Das obige ist der detaillierte Inhalt vonWie kann ich langsame Abfragen mit ORDER BY optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage