我注意到这个查询不会同时运行:
SELECT COUNT(*) FROM mytable WHERE ARRAY[1,2]::integer[] && array_col::integer[];
运行一个并发查询需要 120s 运行两个并发查询需要 240s 运行三个并发查询需要 360s
这张表相当大,有 3200 万条记录。该服务器具有 32 个内核和 230GB 内存,使用 pgtune 设置。根据顶部没有iowait。
我单独使用了这些索引中的每一个,结果相似:
CREATE INDEX mytable_gist ON mytable USING GIST(array_col gist__intbig_ops);
CREATE INDEX mytable_gin ON mytable USING GIN(array_col gin__int_ops);
我现在正在运行 EXPLAIN ANALYZE,这将永远持续下去,所以我想 id post 没有看看是否有人已经知道发生了什么。