I värsta fall, när du tittar på ett oindexerat fält, använder du MIN()
kräver en enda hel passning av bordet. Använder SORT
och LIMIT
kräver en filsortering. Om det körs mot ett stort bord, skulle det sannolikt finnas en betydande skillnad i upplevd prestanda. Som en anekdotisk datapunkt, MIN()
tog .36s medan SORT
och LIMIT
tog .84s mot en tabell med 106 000 rader på min dev-server.
Om du däremot tittar på en indexerad kolumn är skillnaden svårare att märka (meningslös datapunkt är 0,00s i båda fallen). Om man tittar på utdata från förklara ser det dock ut som MIN()
kan helt enkelt plocka det minsta värdet från indexet (raderna 'Välj tabeller optimerade bort' och 'NULL') medan SORT
och LIMIT
behöver fortfarande göra en beställd genomgång av indexet (106 000 rader). Den faktiska prestandapåverkan är förmodligen försumbar.
Det ser ut som MIN()
är vägen att gå - det är snabbare i värsta fall, omöjligt att skilja i bästa fall, är standard SQL och uttrycker tydligast det värde du försöker få. Det enda fallet där det verkar som att använda SORT
och LIMIT
skulle vara önskvärt skulle vara, eftersom mson
nämnt, där du skriver en allmän operation som hittar de övre eller nedre N-värdena från godtyckliga kolumner och det är inte värt att skriva ut operationen i speciella fall.