I værste fald, hvor du ser på et uindekseret felt, ved hjælp af MIN()
kræver en enkelt fuld gennemgang af bordet. Bruger SORT
og LIMIT
kræver en filsortering. Hvis det køres mod et stort bord, vil der sandsynligvis være en betydelig forskel i den oplevede ydeevne. Som et anekdotisk datapunkt, MIN()
tog .36s, mens SORT
og LIMIT
tog .84s mod en tabel med 106.000 rækker på min udviklerserver.
Hvis du imidlertid ser på en indekseret kolonne, er forskellen sværere at bemærke (meningsløst datapunkt er 0,00s i begge tilfælde). Ser man på outputtet af forklar, ser det dog ud som MIN()
er i stand til blot at plukke den mindste værdi fra indekset ('Vælg tabeller optimeret væk' og 'NULL' rækker), mens SORT
og LIMIT
mangler stadig at foretage en ordnet gennemgang af indekset (106.000 rækker). Den faktiske præstationspåvirkning er sandsynligvis ubetydelig.
Det ligner MIN()
er vejen at gå - det er hurtigere i værste fald, i bedste fald ikke til at skelne, er standard SQL og udtrykker tydeligst den værdi, du forsøger at få. Det eneste tilfælde, hvor det ser ud til at bruge SORT
og LIMIT
ville være ønskeligt, da mson
nævnt, hvor du skriver en generel operation, der finder de øverste eller nederste N-værdier fra vilkårlige kolonner, og det er ikke værd at skrive operationen i særlige tilfælde ud.