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 做得不好吗?

Jjanes 是对的。

经过运行分析,现在可以正常工作了。

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.PostgreSQL.html#USER_UpgradeDBInstance.PostgreSQL.MajorVersion