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

So optimieren Sie ein ORDER BY für eine berechnete Spalte in einer MASSIVE-MySQL-Tabelle

Ich habe 2 (ziemlich offensichtliche) Dinge gefunden, die dazu beigetragen haben, diese Abfrage auf ein zufriedenstellendes Niveau zu beschleunigen:

  1. Minimieren Sie die Anzahl der Zeilen, die sortiert werden müssen. Durch die Verwendung eines Indexes für das Feld „id“ und einer Unterauswahl, um zuerst die Anzahl der Datensätze zu kürzen, ist die Dateisortierung in der berechneten Spalte nicht so schlecht. Dh:

    SELECT t.value1, (t.value2 * an_arbitrary_float) as SCORE
    FROM (SELECT * FROM sometable WHERE id = 1) AS t 
    ORDER BY SCORE DESC
    
  2. Versuchen Sie, sort_buffer_size zu erhöhen in my.conf, um diese Dateisortierungen zu beschleunigen.