Php 优化查询(MySQL) 我在MYSQL中有以下表格: 产品(产品标识、隐藏) cat_绑定(prodId、SptPath) params(paramId、prodId、langId、value) 查询 挑选 不同(参数值) 从…起 产品, 猫咪绑定, params 哪里 products.prodId=params.prodId 及 params.paramId='1' 及 params.langId='1' 及 products.prodId=cat_.prodId 及 cat_binds.SptPath-LIKE'-2147483644\u%' 及 products.Hide='0'
如何优化此查询?如何创建正确的索引,从而生成结果所需的行数更少Php 优化查询(MySQL) 我在MYSQL中有以下表格: 产品(产品标识、隐藏) cat_绑定(prodId、SptPath) params(paramId、prodId、langId、value) 查询 挑选 不同(参数值) 从…起 产品, 猫咪绑定, params 哪里 products.prodId=params.prodId 及 params.paramId='1' 及 params.langId='1' 及 products.prodId=cat_.prodId 及 cat_binds.SptPath-LIKE'-2147483644\u%' 及 products.Hide='0',php,mysql,query-optimization,Php,Mysql,Query Optimization,如何优化此查询?如何创建正确的索引,从而生成结果所需的行数更少 感谢您的帮助使用联接,而不是获取不需要的行的Cartisian 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.para
感谢您的帮助使用联接,而不是获取不需要的行的Cartisian
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看起来很好,如果您在所有IDs字段上添加了主索引,我认为它会很好。MySQL还将进行内部优化,以确保订单正确。我只关心包含LIKE表达式的WHERE条件。由于您在上一篇文章中使用了“%”条件,我认为将索引添加到此列会有所帮助,但如果将“%”放在前面,则索引将不会产生太大影响WHERE中引用的所有内容都应被索引。如果您可以添加
explain
结果,则效果会更好result@PavelSzabo你的问题是关于优化,你没有要求没有得到想要的结果。如果您的查询没有找到您想要的内容,那么就用示例数据和所需的输出发布完整的结构。您是对的,如果我像表达式一样导出,这个查询是快速有效的。你们知道,怎样改变表达式以获得更好的结果吗?请阅读这里:。但请记住,无论你做什么,表达喜欢都是代价高昂的。看看你是否有其他选择
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'