Сейчас у меня такой вариант. Все цели достигнуты, но не ясно насколько он производителен. Его можно как-то оптимизировать?
SELECT a.object_id,
b.value AS `width`,
c.value AS `height`,
a.name
FROM `object` a
LEFT JOIN `param_value` b ON a.object_id = b.object_id AND
(b.param_name='width' AND b.value > 2)
LEFT JOIN `param_value` c ON a.object_id = c.object_id AND
(c.param_name='height' AND c.value > 3 AND c.value < 7)
WHERE 1
GROUP BY a.object_id
HAVING `width` IS NOT NULL AND `height` IS NOT NULL
ORDER BY `width` DESC