Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottimizzare un ORDER BY per una colonna calcolata su una tabella MySQL MASSIVA

Ho trovato 2 cose (piuttosto ovvie) che hanno contribuito a velocizzare questa query fino a un livello soddisfacente:

  1. Ridurre al minimo il numero di righe che devono essere ordinate. Usando un indice nel campo "id" e una sottoselezione per tagliare prima il numero di record, l'ordinamento dei file sulla colonna calcolata non è così male. Cioè:

    SELECT t.value1, (t.value2 * an_arbitrary_float) as SCORE
    FROM (SELECT * FROM sometable WHERE id = 1) AS t 
    ORDER BY SCORE DESC
    
  2. Prova ad aumentare sort_buffer_size in my.conf per velocizzare questi tipi di file.