SELECT min and max price или реструктуризация?
Возможно нужно считать отдельно в отдельную таблицу.  Либо с  определенной регулярностью, либо добавлять задание в очередь (queue) при обновлении данных. Тогда данная информация будет доступна мгновенно.
Я бы в таком случае сделал master-slave репликацию. Инсерт/апдейт делал в мастер, а читал со слейва. По идее, должно сильно повысить производительность. Что касается максимальной и минимальной цены - самый удобный вариант, на мой взгляд - это как Василий предложил, я бы так же сделал.