我在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将没有多大作用