Помогите оптимизировать запрос

Kamik

Всем привет!Нужна помощь в оптимизации запросаЗапрос выглядит так
SELECT s_order_basket . * , a.packunit, minpurchase, taxID, IF( ad.instock, ad.instock, av.instock ) AS `instock` , suppliernumber, maxpurchase, purchasesteps, ************, unitID, laststock, shippingtime, releasedate, releasedate AS sReleaseDate, stockmin, esd, su.description AS itemUnit, ob_attr1, ob_attr2, ob_attr3, ob_attr4, ob_attr5, ob_attr6
FROM s_order_basket
LEFT JOIN s_articles_details AS ad ON ad.ordernumber = s_order_basket.ordernumber
LEFT JOIN s_articles_groups_value AS av ON av.ordernumber = s_order_basket.ordernumber
LEFT JOIN s_articles a ON ( a.id = ad.articleID
OR a.id = av.articleID )
LEFT JOIN s_core_units su ON su.id = a.unitID
WHERE sessionID = 'ikosq47ql641bmpkf0rv1v4tp1'
ORDER BY id ASC , datum DESC
Explain
id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra1 	SIMPLE 	av 	system 	ordernumber 	NULL	NULL	NULL	0 	const row not found1 	SIMPLE 	s_order_basket 	ref 	sessionID 	sessionID 	72 	const 	12 	Using where; Using temporary; Using filesort1 	SIMPLE 	ad 	eq_ref 	ordernumber 	ordernumber 	42 	c12shop.s_order_basket.ordernumber 	1 	1 	SIMPLE 	a 	ALL 	PRIMARY 	NULL	NULL	NULL	663173 	1 	SIMPLE 	su 	eq_ref 	PRIMARY 	PRIMARY 	4 	c12shop.a.unitID 	1
7 ответов

Kamik

s_order_basket есть индекс на articleID


Kamik

Kamik,поле sessionID из какой таблицы ?все эти LEFT JOIN - точна нужны ?как вариант, для начала, можно разбить запрос на 2-а и объеденить по UNIONвот это - ( a.id = ad.articleID OR a.id = av.articleID )


Kamik

sessionID из s_order_basket


Kamik

объеденить по UNION
а можно примерчик? я не ас в запросах и union не пользовал еще :)


Kamik

а можно примерчик? я не ас в запросах и union не пользовал еще :)
нее, union тут похоже не при делахсделай индекс на sessionID, (или это ты его имел в виду - "s_order_basket есть индекс на articleID " ?)


Kamik

sessionID тоже есть индекс


Kamik

после того как я выкинул OR a.id = av.articleID все встало на свои места :)