Это во многом зависит от оптимизатора запросов в реализации SQL. В лучшем случае они будут иметь одинаковую производительность. Как правило, однако, первый запрос потенциально намного быстрее.
Первый запрос, по существу, просит СУБД проверить каждое значение в someIntColumn
и выбрать самый большой.
Второй запрос просит СУБД отсортировать все значения в someIntColumn
от самых больших до самых маленьких и выбрать первый. В зависимости от количества строк в таблице и наличия (или отсутствия) индекса в столбце это может быть значительно медленнее.
Если оптимизатор запросов достаточно сложный, чтобы понять, что второй запрос эквивалентен первому, вам повезло. Но если вы перенастроете приложение на другую СУБД, вы можете получить неожиданно низкую производительность.
Я согласен с этим. MAX() дает СУБД четкую цель и возможность использовать любую оптимизацию, которая имеет место для этого случая (скажем, супербыстрый «макс» поиск, который обновляется, только если столбец вставлен выше). Вторая команда сложнее понять систему в ее намерениях и, возможно, более трудно оптимизировать. –