sql >> Databasteknik >  >> RDS >> Mysql

Något sätt att undvika en filsortering när order by skiljer sig från where-klausulen?

Observera att MySQL-termen filesort betyder inte nödvändigtvis att den skriver till disken. Det betyder bara att det kommer att sortera utan att använda ett index. Om resultatuppsättningen är tillräckligt liten kommer MySQL att sortera den i minnet, vilket är storleksordningar snabbare än disk I/O.

Du kan öka mängden minne som MySQL allokerar för filsorter i minnet med hjälp av sort_buffer_size servervariabel. I MySQL 5.1 är standardstorleken för sorteringsbuffert 2 MB, och det maximala du kan tilldela är 4 GB.

uppdatering: Angående Jonathan Lefflers kommentar om att mäta hur lång tid sorteringen tar, kan du lära dig hur du använder SHOW PROFILE FOR QUERY som ger dig en uppdelning av hur lång tid varje fas av exekveringen tar.



  1. Algoritm för att generera ett slumptal

  2. MySQL - Beställ fråga och visa en slumpmässig rad överst

  3. MySQL SELECT x FROM a WHERE NOT IN (VÄLJ x FRÅN b) - Oväntat resultat

  4. Vilken är den rekommenderade batchstorleken för SqlBulkCopy?