我們有一家電子商店,在這個電子商店中,類別和產品之間有許多複雜的聯繫。緩慢的Mysql查詢,3個左連接
我正在使用分類標準表來存儲產品 - 類別和產品 - 產品之間的關係作爲子產品。
產品可能是多個類別的成員。 產品可能是其他產品的子產品。 (可能多於一個) 產品可以是其它產品的模塊(可能多於一個)的查詢的
別名: PR-產品 CT-類別 SP-子產品 MD-模塊
Select pr.*,ifnull(sp.destination_id,0) as `top_id`,
ifnull(ct.destination_id,0) as `category_id`
from Products as pr
Left join Taxonomy as ct
on (ct.source_id=pr.id and ct.source='Products' and ct.destination='Categories')
Left join Taxonomy as sp
on (sp.source_id=pr.id and sp.source='Products' and sp.destination='Products' and sp.type='TOPID')
Left join Modules as md
on(pr.id = md.product_id)
where pr.deleted=false
and ct.destination_id='47'
and sp.destination_id is null
and md.product_id is null
order by pr.order,pr.sub_order
使用此查詢;我試圖讓所有產品在Category_id = 47下,而不是任何產品的模塊,也不是任何產品的子產品。
此查詢需要23秒。 產品中有7.820條記錄,模塊中有3.200條記錄,分類標準有19.000條記錄