Есть 10 000 лотов с аукциона с ценами, вывожу минимальную, максимальную, среднюю цену
Запрос обрабатывается 13 секунд, чем больше лотов, тем больше время запроса
SELECT MIN(cast(pm.meta_value AS SIGNED)) AS min_price, MAX(cast(pm.meta_value AS SIGNED)) AS max_price
FROM wp_postmeta pm
WHERE 1=1
AND pm.meta_key = 'info_final_bid'
AND pm.meta_value != ''
AND pm.meta_value != 0
Вы же пишите, что у вас таблица EAV, а то от такого комментария можно тронуться.
С учетом ваших вычислений, вероятно стоит рассмотреть вариант вынесения в отдельную таблицу, где использовать integer. Т.к. нужно еще и среднее, то индексация не поможет, все равно придется проходить по всем 10 000 значений. Если возможно еще большее увеличение, то вариант не подходит.
И как уже предложили, вариант с уже рассчитанными агрегатами.
Алгоритм работает от О(n), как совет могу предложить сразу сортировать всю таблицу по возрастанию цены, тогда минимальный будет элемент с индексом 0, средний - (id последнего)/2, максимальный элемент - последний id. Как алгоритм сортировки предлагаю использовать qSort
Soho, извиняюсь, не так понял :). Эту операцию увы, не ускорить, если только не хранить заранее известную сумму всех элементов, а затем к ней прибавлять, удалять, чтобы не делать постоянно прогон по БД