(konsoliderar diskussionen ovan)
Du kan inte beställa effektivt genom ett beräkningsresultat. För att få den här frågan att fungera snabbt, skapa en ranking kolumn som innehåller c.age-UNIX_TIMESTAMP(c.newdate) . Skapa sedan ett index på id och ranking , dvs. CREATE INDEX id_ranking ON c (id, ranking) för att göra både GROUP BY och ORDER BY indexerade.