gpt4 book ai didi

MySQL查询需要优化

转载 作者:行者123 更新时间:2023-11-30 22:03:30 25 4
gpt4 key购买 nike

我有一个查询,它在一个数据库中获取每个型号价格最低的产品 ID,其中产品的价格和 ID 在一个表中,型号 ID 在一个属性表中,该表通过以下方式链接到产品一个 id_product 字段。

问题是这个查询目前需要超过 40 秒才能运行,而且由于表中目前只有大约 1/4 的产品总数,所以它需要运行得更快才能在最终结果中发挥作用产品。

这是目前的查询:

SELECT P.id, A.value
FROM `products` P, `attributes_values` A
WHERE A.id_product = P.id
AND P.price = (
SELECT MIN( P2.price )
FROM `products` P2, `attributes_values` A2
WHERE A2.id_product = P2.id
AND A2.id_attribute =54
AND A2.value = A.value )
AND A.id_attribute =54
GROUP BY A.value
LIMIT 0 , 30

预期的结果是这样的:

P.id (product ID) | A.value (model ID)
-----------------------------------------
1245 | AGRIMAX FORCE
1250 | AGRIMAX FORTIS
1255 | AGRIMAX TERIS
1257 | AGRIMAXSIRIO
1908 | ALENZA
1927 | ALENZA PLUS
1259 | AMAX SPARGO
1261 | AMAX TERIS
2 | ARMORMAXMSD

如何在不更改表设置方式的情况下加快查询速度?

最佳答案

如果您不能提供有关表的信息,很难给出正确的答案,但如果 MySQL 有问题,您可以通过这种方式简化您的查询

SELECT P.id, A.value FROM `products` P, LEFT JOIN `attributes_values` A ON  A.id_product = P.id WHERE A.id_attribute =54 ORDER BY price LIMIT 0 , 30

然后,在循环结果时,检查价格并在价格与您已解析的价格不同时中断循环。

通过在价格字段上添加索引,您的查询可能会很快加快...

关于MySQL查询需要优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42564976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com