Ik heb de volgende query:
SELECT DISTINCT p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_image, p.products_barcode
FROM products p
LEFT JOIN products_description pd ON ( p.products_id = pd.products_id AND pd.language_id = '4' )
LEFT JOIN specials s ON p.products_id = s.products_id
INNER JOIN products_to_stores p2s ON p.products_id = p2s.products_id
INNER JOIN products_to_categories p2c ON p.products_id = p2c.products_id
LEFT JOIN categories c ON p2c.categories_id = c.categories_id
WHERE p2s.stores_id = '20'
AND p.products_status =1
AND c.categories_status >=1
AND p2c.categories_id = '607'
AND p.products_id <> '70679816'
AND (
( s.status = 1 AND s.specials_new_products_price > 4.91598 and s.specials_new_products_price < 6.00842 )
OR ( s.status = 0 or s.status is null AND p.products_price > 4.91598 and p.products_price < 6.00842 )
)
Via mysqslap doet hij er 17.79 over (bij 100 querys tegelijk)
hiervoor had ik de query als 26 sec verwerkingstijd dus ik heb al 9 sec winst gemaakt ten opzichte van een oudere versie van deze query.
Maar ik wil nog verder optimaliseren
Als ik hem zo uitvoer:
SELECT DISTINCT p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_image, p.products_barcode, pd.products_id, pd.products_description, p.products_status
FROM products p LEFT JOIN products_description pd ON ( p.products_id = pd.products_id AND pd.language_id = '4' AND p.products_status =1 )
LEFT JOIN specials s ON p.products_id = s.products_id
INNER JOIN products_to_stores p2s ON p.products_id = p2s.products_id AND p2s.stores_id = '20'
INNER JOIN products_to_categories p2c ON p.products_id = p2c.products_id AND p2c.categories_id = '607'
LEFT JOIN categories c ON p2c.categories_id = c.categories_id AND c.categories_status >= 1
WHERE p.products_id <> '70679816'
AND (
( s.status = 1 AND s.specials_new_products_price > 4.91598 and s.specials_new_products_price < 6.00842 )
OR ( s.status = 0 or s.status is null AND p.products_price > 4.91598 and p.products_price < 6.00842 )
)
dan is de verwerkingstijd 2.5 sec voor 100 querys echter word de pd.description NULL zodra de products_status op 0 staat
Weet iemand nog methodes om de query te verlichten?
De 2e query is dus niet een optie helaas
1.626 views