Разобрался, сделал.
Было:SELECT SQL_NO_CACHE attribute_id, text FROM (
SELECT DISTINCT p.product_id, p2a.attribute_id, p2a.text, p.price as realprice
FROM oc_product p
LEFT JOIN oc_manufacturer m ON(m.manufacturer_id=p.manufacturer_id)
LEFT JOIN oc_product_option_value pov ON (pov.product_id=p.product_id)
LEFT JOIN oc_product_to_store p2s ON (p2s.product_id=p.product_id)
LEFT JOIN oc_product_to_category p2c ON (p2c.product_id=p.product_id)
LEFT JOIN oc_category_path cp ON(cp.category_id=p2c.category_id)
LEFT JOIN oc_product_attribute p2a ON (p2a.product_id=p.product_id)
WHERE p2a.attribute_id IS NOT NULL AND EXISTS
(select 1 FROM oc_product_attribute p2a0
WHERE p2a0.product_id=p2a.product_id AND p2a0.attribute_id = 20
AND (p2a0.text = '2х36 Вт' OR p2a0.text like '2х36 Вт:%' OR p2a0.text like '%:2х36 Вт' OR p2a0.text like '%:2х36 Вт:%'))
AND EXISTS (select 1 FROM oc_product_attribute p2a1 WHERE p2a1.product_id=p2a.product_id AND p2a1.attribute_id = 22
AND (p2a1.text = 'накладные' OR p2a1.text like 'накладные:%' OR p2a1.text like '%:накладные' OR p2a1.text like '%:накладные:%'))
AND EXISTS (select 1 FROM oc_product_attribute p2a2 WHERE p2a2.product_id=p2a.product_id AND p2a2.attribute_id = 27
AND (p2a2.text = '120 см' OR p2a2.text like '120 см:%' OR p2a2.text like '%:120 см' OR p2a2.text like '%:120 см:%'))
AND p.status = '1' AND p2s.store_id = 0) as innertable WHERE 1 GROUP BY attribute_id, text
Стало:SELECT SQL_NO_CACHE attribute_id, text FROM (
SELECT DISTINCT p.product_id, p2a.attribute_id, p2a.text, p.price as realprice
FROM oc_product p
LEFT JOIN oc_manufacturer m ON(m.manufacturer_id=p.manufacturer_id)
LEFT JOIN oc_product_option_value pov ON (pov.product_id=p.product_id)
LEFT JOIN oc_product_to_store p2s ON (p2s.product_id=p.product_id)
LEFT JOIN oc_product_to_category p2c ON (p2c.product_id=p.product_id)
LEFT JOIN oc_category_path cp ON(cp.category_id=p2c.category_id)
LEFT JOIN oc_product_attribute_id p2a ON (p2a.product_id=p.product_id)
INNER JOIN oc_product_attribute_id p2a0 ON (p2a0.product_id=p.product_id)
INNER JOIN oc_product_attribute_id p2a1 ON (p2a1.product_id=p.product_id)
INNER JOIN oc_product_attribute_id p2a2 ON (p2a2.product_id=p.product_id)
WHERE (p2a0.attribute_id = 20 AND p2a0.text like '%2х36 Вт%')
AND (p2a1.attribute_id = 22 AND p2a1.text like '%накладные%')
AND (p2a2.attribute_id = 27 AND p2a2.text like '%120 см%')
) as innertable WHERE 1 GROUP BY attribute_id, text
Время 0,13 ->0.05.
Когда LIKE %...% заменил на text_id получилось время 0,04 :
SELECT SQL_NO_CACHE attribute_id, text FROM (
SELECT DISTINCT p.product_id, p2a.attribute_id, p2a.text, p.price as realprice
FROM oc_product p
LEFT JOIN oc_manufacturer m ON(m.manufacturer_id=p.manufacturer_id)
LEFT JOIN oc_product_option_value pov ON (pov.product_id=p.product_id)
LEFT JOIN oc_product_to_store p2s ON (p2s.product_id=p.product_id)
LEFT JOIN oc_product_to_category p2c ON (p2c.product_id=p.product_id)
LEFT JOIN oc_category_path cp ON(cp.category_id=p2c.category_id)
INNER JOIN oc_product_attribute_id p2a0 ON (p2a0.product_id=p.product_id)
INNER JOIN oc_product_attribute_id p2a1 ON (p2a1.product_id=p.product_id)
INNER JOIN oc_product_attribute_id p2a2 ON (p2a2.product_id=p.product_id)
LEFT JOIN oc_product_attribute_id p2a ON (p2a.product_id=p.product_id)
WHERE (p2a0.text_id = '67')
AND (p2a1.text_id = '82')
AND (p2a2.text_id = '88')
) as innertable WHERE 1 GROUP BY attribute_id, text
Причем расположение строки LEFT JOIN oc_product_attribute_id p2a ON (p2a.product_id=p.product_id) влияет на время в 2 раза. После Inner join быстрее