В худшем случае, когда вы смотрите на неиндексированное поле, использование MIN()
требует одного полного прохода таблицы. Использование SORT
и LIMIT
требует сортировки файлов. При запуске с большой таблицей, вероятно, будет существенная разница в воспринимаемой производительности. В качестве бессмысленной точки данных MIN()
потребовалось 0,36 с, а SORT
и LIMIT
- 0,84 против таблицы строк 106 000 на моем сервере dev.
Однако, если вы смотрите на индексированный столбец, разницу заметить труднее (бессмысленная точка данных равна 0,00 с в обоих случаях). Однако, смотря на вывод команды объяснения, похоже, что MIN()
может просто извлечь наименьшее значение из индекса (строки «Выбранные таблицы оптимизированы» и «NULL»), тогда как SORT
и LIMIT
все еще нужны необходимо выполнить упорядоченный обход индекса (106 000 строк). Фактическое влияние на производительность, вероятно, незначительно.
Похоже, что MIN()
- это путь, который в худшем случае быстрее, неотличим в лучшем случае, это стандартный SQL и наиболее четко выражает значение, которое вы пытаетесь получить. Единственный случай, когда кажется, что было бы желательно использовать SORT
и LIMIT
, был бы, как упомянуто mson , где вы пишете общую операцию, которая находит верхнее или нижнее N значений из произвольных столбцов и не стоит выписывать специальную операцию.