sql >> Base de Datos >  >> RDS >> Mysql

Cómo optimizar un ORDER BY para una columna calculada en una tabla MASIVA de MySQL

He encontrado 2 cosas (algo obvias) que han ayudado a acelerar esta consulta hasta un nivel satisfactorio:

  1. Minimice el número de filas que deben ordenarse. Al usar un índice en el campo 'id' y una subselección para recortar primero el número de registros, la ordenación del archivo en la columna calculada no es tan mala. Es decir:

    SELECT t.value1, (t.value2 * an_arbitrary_float) as SCORE
    FROM (SELECT * FROM sometable WHERE id = 1) AS t 
    ORDER BY SCORE DESC
    
  2. Intente aumentar sort_buffer_size en my.conf para acelerar esos tipos de archivos.