↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

上千个值的 IN 子句把时间耗在查询规划上 RSS

数千个值的 IN 子句在 PostgreSQL 里是隐蔽瓶颈:规划器逐个解析常量、展开成庞大表达式树,CPU 花在规划而不是执行。TigerData 实测把写法换成 ANY(ARRAY[...]),上千个 ID 作为单个数组参数传入,规划时间从 40 多毫秒降到 2 毫秒以内,并让规划器选择 Bitmap Index Scan。ORM 是超大 IN 子句最常见的来源,用 EXPLAIN ANALYZE 看规划是否超过总耗时一半即可判断。

发布于 2026-09-10T10:59:40.812693Z · TigerData · TigerData 博客
SQL 性能 查询规划

数千个值的 IN 子句在 PostgreSQL 里是隐蔽瓶颈:规划器逐个解析常量、展开成庞大表达式树,CPU 花在规划而不是执行。TigerData 实测把写法换成 ANY(ARRAY[...]),上千个 ID 作为单个数组参数传入,规划时间从 40 多毫秒降到 2 毫秒以内,并让规划器选择 Bitmap Index Scan。ORM 是超大 IN 子句最常见的来源,用 EXPLAIN ANALYZE 看规划是否超过总耗时一半即可判断。

数千个值的 IN 子句在 PostgreSQL 里是隐蔽瓶颈:规划器逐个解析常量、展开成庞大表达式树,CPU 花在规划而不是执行。TigerData 实测把写法换成 ANY(ARRAY[...]),上千个 ID 作为单个数组参数传入,规划时间从 40 多毫秒降到 2 毫秒以内,并让规划器选择 Bitmap Index Scan。ORM 是超大 IN 子句最常见的来源,用 EXPLAIN ANALYZE 看规划是否超过总耗时一半即可判断。

原始来源 ↗

来源记录
  • center.info_item · bf77e14dc823ab69 · 2026-10-03T04:08:35.169032Z
  • pgweb.info_item · bf77e14dc823ab69 · 2026-10-03T04:08:55.967155Z