Выберите MAX или Order By Limit 1

MIN/MAX vs. ORDER BY и LIMIT

Чтобы следить за этим вопросом: я нашел некоторые результаты, очень отличающиеся от того, что описывает Шон Максомем:

У меня есть таблица размером около 300 М.

Select max(foo) from bar; занимает около 15 секунд. для запуска

Select foo from bar order by foo desc limit 1; занимает 3 сек. для запуска

Заявление Sean: "Похоже, что MIN() - это путь - он быстрее в худшем случае, неотличимый в лучшем случае" просто не подходит для этого случая... но я понятия не имею, почему. Может кто-нибудь предложить объяснение?

Изменить: Поскольку я не могу показать структуру таблицы здесь: предположим, что bar является таблицей в ndb_cluster без каких-либо отношений, foo - произвольная точка данных без индекса.

Ответ 1

Чтобы избежать полного прохода, добавьте столбец INDEX on foo.

Ответ 2

У меня похожая ситуация, индекс на рассматриваемом столбце, и все же решение порядка и ограничений кажется более быстрым. Насколько это хорошо:)