postgres 升级到 v11.11(AWS) 后,此查询导致 cpu 99.9% 峰值。 v10 没有这样的问题。是什么原因造成的?
after postgres upgrade to v11.11(AWS), this query is causing cpu 99.9% peak. There was no such issue with v10. What is causing?
我确实意识到 sql(尤其是子查询)可以得到增强。但是,重点是确切的查询在 v10.11 中没有任何问题。
子查询本身 returns 只有 1 个不同的 ID。如果我直接输入,查询将在亚秒级内运行。这个带有 'in' 子句的子查询似乎是罪魁祸首。
SELECT *
FROM "nego"."quotenego" AS "ModelA"
WHERE "ModelA"."quotenegoheaderid" = 5714 AND
"ModelA"."qpnid" IN (
*select distinct qpnid FROM "nego"."quotenego" AS "ModelA"
where
(("ModelA"."partnumber1" ILIKE 'a%') AND
("ModelA"."partnumber2" ILIKE 'b%')) AND
"ModelA"."quotenegoheaderid" = 5714 AND
"ModelA"."mfgid" in (2598,2024)*
)
ORDER BY "ModelA"."seq" ASC LIMIT 50 OFFSET 0;
知道为什么 v11 做得不好吗?
我确实意识到 sql(尤其是子查询)可以得到增强。但是,重点是确切的查询在 v10.11 中没有任何问题。
子查询本身 returns 只有 1 个不同的 ID。如果我直接输入,查询将在亚秒级内运行。这个带有 'in' 子句的子查询似乎是罪魁祸首。
SELECT *
FROM "nego"."quotenego" AS "ModelA"
WHERE "ModelA"."quotenegoheaderid" = 5714 AND
"ModelA"."qpnid" IN (
*select distinct qpnid FROM "nego"."quotenego" AS "ModelA"
where
(("ModelA"."partnumber1" ILIKE 'a%') AND
("ModelA"."partnumber2" ILIKE 'b%')) AND
"ModelA"."quotenegoheaderid" = 5714 AND
"ModelA"."mfgid" in (2598,2024)*
)
ORDER BY "ModelA"."seq" ASC LIMIT 50 OFFSET 0;
知道为什么 v11 做得不好吗?