Verlangsamung von Abfragen mit Bestellung nach Klausel
Mysql -Datenbankbenutzer haben ein rätselhaftes Leistungsproblem gestoßen, das sich auf die Verwendung der Bestellung in Bezug auf die Bestellung beziehen. Wenn die Ausführungszeit der Abfrage zu einer komplexen Abfrage mit mehreren Verbindungen und Unterabfragen hinzugefügt wird, steigt sie erheblich von Millisekunden bis Sekunden. Ohne die Bestellung nach Klausel erfolgt die Abfrage optimal. Wenn jedoch eine Spalte als Sortierkriterien verwendet wird, verlangsamt sich die Abfrage um mehrere Größenordnungen auf etwa 10 Sekunden.
Die Hauptursache für dieses Problem liegt im Optimierungsmechanismus der Datenbank. Standardmäßig versucht MySQL, Abfragen zu optimieren, indem temporäre Tabellen erstellt oder Unterabfragen verwendet werden. Wenn eine Bestellung nach Klausel hinzugefügt wird, fehlt der Optimierer die Größe der benötigten temporären Tabelle falsch und verteilt eine unzureichende Menge an Speicher. Infolgedessen fällt die Abfrage auf einen weniger effizienten Sortieralgorithmus zurück, der zur beobachteten Verlangsamung führt.
Eine mögliche Problemumgehung besteht darin, die Abfrage mit einer korrelierten Unterabfrage oder einem CTE (gemeinsamer Tabellenausdruck) umzusetzen, um die Sortierschritt explizit zu spezifizieren. Auf diese Weise kann der Optimierer die temporäre Tabellengröße korrekt schätzen und die Verlangsamung verhindern.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3