[英]Optimization query (MySQL)
products(prodId, Hide) cat_binds(prodId,SptPath) params(paramId,prodId,langId,value)
SELECT DISTINCT(params.value) FROM products, cat_binds, params WHERE products.prodId = params.prodId AND params.paramId = '1' AND params.langId = '1' AND products.prodId = cat_binds.prodId AND cat_binds.SptPath LIKE '-2147483644\_%' AND products.Hide = '0'
如何優化此查詢? 如何創建正確的索引以生成較少的結果行。
感謝幫助
使用聯接而不是獲取不需要的行的笛卡爾。
SELECT DISTINCT
(params.value)
FROM products
LEFT JOIN cat_binds
ON cat_binds.prodId = products.prodId
LEFT JOIN params
ON params.prodId = products.prodId
WHERE params.paramId = '1'
AND params.langId = '1'
AND cat_binds.SptPath LIKE '-2147483644\_%'
AND products.Hide = '0'
您的SQL看起來不錯,如果您在所有ID字段上添加了主索引,我認為它會很好。 MySQL還將在內部進行優化以使順序正確。 我只關心包含LIKE表達式的WHERE條件。 由於您在最后使用'%'條件,因此我認為在此列中添加索引會有所幫助,但是如果您將'%'放在前面,則索引不會有太大影響
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.