Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment optimiser un ORDER BY pour une colonne calculée sur une table MASSIVE MySQL

J'ai trouvé 2 choses (plutôt évidentes) qui ont aidé à accélérer cette requête jusqu'à un niveau satisfaisant :

  1. Réduisez le nombre de lignes à trier. En utilisant un index sur le champ 'id' et une sous-sélection pour réduire d'abord le nombre d'enregistrements, le tri des fichiers sur la colonne calculée n'est pas si mauvais. C'est-à-dire :

    SELECT t.value1, (t.value2 * an_arbitrary_float) as SCORE
    FROM (SELECT * FROM sometable WHERE id = 1) AS t 
    ORDER BY SCORE DESC
    
  2. Essayez d'augmenter sort_buffer_size dans my.conf pour accélérer ces tris de fichiers.