发布于 2026-09-10T10:59:40.812693Z · TigerData · TigerData 博客

数千个值的 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