Я как-то не вижу жуткого криминала в ваших запросах.
Первое — постройте индексы по полям участвующим в запросах.
Второе, поскольку мускуль не поддерживает нормально вьюхи (или уже поддерживает? — вопрос в зал) создайте дополнительную таблицу типа:
pos_id int primary,
pos_last_recived DateTime,
pos_last_price float
И при получении на склад помимо history пишите значение в неё (
insert on duplicate update)
Тогда простым запросом (через LEFT JOIN) сможете одновременно получать последнюю цену и дату прихода позиции.