sql >> Databasteknik >  >> RDS >> Mysql

Hur man optimerar en ORDER BY för en beräknad kolumn på en MASSIV MySQL-tabell

Jag har hittat två (slags uppenbara) saker som har hjälpt till att snabba upp den här frågan till en tillfredsställande nivå:

  1. Minimera antalet rader som behöver sorteras. Genom att använda ett index på 'id'-fältet och ett underval för att trimma antalet poster först, blir filsorteringen i den beräknade kolumnen inte så dålig. Dvs:

    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 att öka sort_buffer_size i my.conf för att snabba upp dessa filsorteringar.



  1. När du automatiskt skapar underdomäner vid användarregistrering skapar det en ny webbplats eller ser det ut som en webbplats?

  2. T-SQL för att hitta redundanta index

  3. Försöker komma åt arrayoffset på värdet av typen bool

  4. hur gör man en funktion för att returnera radtyp från en tabell i pl/sql?