Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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'