V nejhorším případě, kdy se díváte na neindexované pole, pomocí MIN()
vyžaduje jeden úplný průchod tabulkou. Pomocí SORT
a LIMIT
vyžaduje řazení souborů. Pokud běžíte proti velké tabulce, pravděpodobně by byl významný rozdíl ve vnímaném výkonu. Jako neoficiální datový bod MIN()
při SORT
trvalo 0,36 s a LIMIT
vzal 0,84 s proti 106 000 řádkové tabulce na mém dev serveru.
Pokud se však díváte na indexovaný sloupec, rozdíl je obtížnější si všimnout (nesmyslný datový bod je v obou případech 0,00 s). Když se však podíváme na výstup z vysvětlení, vypadá to jako MIN()
je schopen jednoduše vybrat nejmenší hodnotu z indexu (řádky 'Vybrat tabulky optimalizované pryč' a 'NULL'), zatímco SORT
a LIMIT
ještě potřebuje provést uspořádané procházení indexu (106 000 řádků). Skutečný dopad na výkon je pravděpodobně zanedbatelný.
Vypadá to jako MIN()
je správná cesta – v horším případě je rychlejší, v lepším k nerozeznání, jde o standardní SQL a nejjasněji vyjadřuje hodnotu, kterou se snažíte získat. Jediný případ, kdy se zdá, že pomocí SORT
a LIMIT
by bylo žádoucí, protože mson
zmíněnou, kde píšete obecnou operaci, která najde horních nebo dolních N hodnot z libovolných sloupců a nemá cenu vypisovat operaci speciálního případu.