优化查询(MySQL)


Optimization query (MySQL)

我在MYSQL中有这个表:

<>之前产品(prodId、隐藏)cat_binds (prodId SptPath)参数(paramId prodId langId,值)之前查询

<>之前选择不同的(params.value)从产品,cat_binds,参数个数在哪里产品。prodId = params.prodId和参数个数。paramId = '1'和参数个数。langId = '1'和产品。prodId = cat_bindings .prodId和cat_binds。SptPath LIKE '-2147483644'_%'和产品。Hide = '0'之前

如何优化这个查询?如何创建正确的索引,以产生更少的行为结果。

Thanks for help

使用连接来代替获取不需要的行

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条件。当你在最后使用'%'条件时,我认为在这一列中添加' Index '会有所帮助,但如果你在前面加上'%',那么Index将没有多大作用