gpt4 book ai didi

php - 在 OpenCart 中加速 MySQL 查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:27 26 4
gpt4 key购买 nike

我不知道这是不是一个好问题,但我的一个模块中有这个查询:

SELECT * FROM `product` WHERE upc IN (
SELECT `upc` FROM `product` WHERE `upc` <> '' GROUP BY `upc` HAVING COUNT(*) > 1)
ORDER BY `upc`

产品表很大,执行此查询大约需要 20 分钟。

我不是 MySQL 专家,但可以加快此查询的速度吗?

我的第二个重查询是更新查询:

UPDATE `product` SET `quantity` = '0' WHERE `sku` IN ( SELECT `id_xml_prd` FROM `ixml_prd_map` WHERE `id_xml` = '8' );

产品表上的当前索引:

enter image description here

在 ixml_prd_map 上:

enter image description here

最佳答案

您可以像下面那样使用 WHERE EXISTS 修改您的查询,而不是使用带有子查询的 IN 子句。

SELECT * FROM `product` p 
WHERE EXISTS (
SELECT 1 FROM
`product`
WHERE `upc` <> '' AND `upc` = p.`upc`
GROUP BY `upc`
HAVING COUNT(*) > 1)
ORDER BY `upc`;

您还希望在 upc 列上建立索引。

执行普通的update join 查询而不是IN 子查询

UPDATE `product` p
JOIN `ixml_prd_map` i ON p.`sku` = i.`id_xml_prd`
AND i.`id_xml` = '8'
SET p.`quantity` = '0';

此外,为了使此 UPDATE 查询更快,在 id_xml_prdixml_prd_map 表上的 id_xml 列上有一个索引.

关于php - 在 OpenCart 中加速 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32363383/

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