以下查询
EXPLAIN
SELECT c.global_id
FROM centers_res17 AS c
LEFT JOIN regions_res17 AS r ON ST_Contains(r.wkb_geometry, c.wkb_geometry)
WHERE r.global_id IS NULL;表示将在centers_res17上使用并行顺序扫描。这很好,查询速度也很快(使用了8个工作人员,CPU很忙)
现在,如果我执行SELECT c.global_id INTO foo,查询计划表示顺序扫描,这要慢得多。
我试着:
CREATE之前的foo表(也作为TEMP)WITH子句中,然后将其结果选择到foo中。CREATE foo AS (^^Above statement^^)上述任何操作都不使用多个工作人员进行并行顺序扫描(根据查询计划并实际运行查询)。我只需让select语句‘原样’,然后复制粘贴值从我的结果窗口.不是最优的。
请向我解释为什么没有使用并行顺序扫描,或者如何修改我的查询,以便将结果选择到foo中。
我在Win10上使用了Win10 9.6。
发布于 2018-02-20 08:14:38
如果下列任何一项为真,规划者将不会为给定的查询生成它们
当您将行插入到表中时,底层查询将永远不会使用并行性,至少在当前版本(10)和更早版本中不会使用。
https://dba.stackexchange.com/questions/198342
复制相似问题