Na pior das hipóteses, onde você está olhando para um campo não indexado, usando
MIN()
requer uma única passagem completa da tabela. Usando SORT
e LIMIT
requer uma classificação de arquivos. Se executado em uma mesa grande, provavelmente haveria uma diferença significativa no desempenho percebido. Como um ponto de dados anedótico, MIN()
levou 0,36s enquanto SORT
e LIMIT
levou .84s contra uma tabela de 106.000 linhas no meu servidor dev. Se, no entanto, você estiver olhando para uma coluna indexada, a diferença será mais difícil de notar (o ponto de dados sem sentido é 0,00s em ambos os casos). Olhando para a saída de explicação, no entanto, parece
MIN()
é capaz de simplesmente extrair o menor valor do índice (linhas 'Selecionar tabelas otimizadas' e 'NULL') enquanto o SORT
e LIMIT
ainda precisa fazer uma travessia ordenada do índice (106.000 linhas). O impacto real no desempenho é provavelmente insignificante. Parece
MIN()
é o caminho a seguir - é mais rápido no pior caso, indistinguível no melhor caso, é SQL padrão e expressa mais claramente o valor que você está tentando obter. O único caso em que parece que usar SORT
e LIMIT
seria desejável, como mson
mencionado, onde você está escrevendo uma operação geral que encontra os valores N superiores ou inferiores de colunas arbitrárias e não vale a pena escrever a operação de caso especial.