簡體   English   中英

優化查詢(MySQL)

[英]Optimization query (MySQL)

我在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM