Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es eine Möglichkeit, eine Dateisortierung zu vermeiden, wenn sich order by von der where-Klausel unterscheidet?

Beachten Sie, dass der MySQL-Begriff filesort bedeutet nicht unbedingt, dass es auf die Festplatte schreibt. Es bedeutet nur, dass es ohne Verwendung eines Indexes sortiert wird. Wenn die Ergebnismenge klein genug ist, sortiert MySQL sie im Speicher, was um Größenordnungen schneller ist als Festplatten-I/O.

Sie können die Speichermenge, die MySQL für speicherinterne Dateisortierungen zuweist, mit dem sort_buffer_size Servervariable. In MySQL 5.1 beträgt die Standardgröße des Sortierpuffers 2 MB, und Sie können maximal 4 GB zuweisen.

Aktualisierung: In Bezug auf Jonathan Lefflers Kommentar zum Messen, wie lange das Sortieren dauert, können Sie lernen, wie man SHOW PROFILE FOR QUERY Dadurch erhalten Sie eine Aufschlüsselung, wie lange jede Phase der Abfrageausführung dauert.