我有一个查询,当在我的PostgreSQL数据库上运行时,会随着它们的数量增加而不断增加执行时间.在高负载期间,我使用解释分析从Dbeaver手动运行相同的查询,计划时间约为9秒,执行时间约为1秒.但是,如果我将结果查询中的所有实际时间相加,我得不到接近9秒的结果.
我也没有多个循环.以下是解释分析结果:
Nested Loop Left Join (cost=26304.72..35480113.45 rows=624544385412 width=1843) (actual time=0.277..0.284 rows=1 loops=1)
-> Nested Loop (cost=26304.15..907648.85 rows=320874 width=1495) (actual time=0.215..0.218 rows=1 loops=1)
-> Index Scan using idx_info_part_13_test_id on test_part_13 "Model" (cost=0.69..8.71 rows=1 width=976) (actual time=0.140..0.142 rows=1 loops=1)
Index Cond: ((test_id)::text = 'sjbvas6dsad4sad7asda7sd567as5f7dsdf75sdfsdf6sdf5sfas78d6fdsdsada'::text)
-> Bitmap Heap Scan on outputs_p_33 "Model" (cost=26303.46..904431.40 rows=320874 width=519) (actual time=0.060..0.061 rows=1 loops=1)
Recheck Cond: ((test_id)::text = 'sjbvas6dsad4sad7asda7sd567as5f7dsdf75sdfsdf6sdf5sfas78d6fdsdsada'::text)
Heap Blocks: exact=1
-> Bitmap Index Scan on pk_test_p_33 (cost=0.00..26223.24 rows=320874 width=0) (actual time=0.055..0.055 rows=1 loops=1)
Index Cond: ((test_id)::text = 'sjbvas6dsad4sad7asda7sd567as5f7dsdf75sdfsdf6sdf5sfas78d6fdsdsada'::text)
-> Append (cost=0.56..107.54 rows=20 width=348) (actual time=0.046..0.049 rows=1 loops=1)
-> Index Scan using addresses_part_0_address_id_idx on addresses_part_0 "ModelType" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_1_address_id_idx on addresses_part_1 "ModelType_1" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_2_address_id_idx on addresses_part_2 "ModelType_2" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_3_address_id_idx on addresses_part_3 "ModelType_3" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_4_address_id_idx on addresses_part_4 "ModelType_4" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_5_address_id_idx on addresses_part_5 "ModelType_5" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_6_address_id_idx on addresses_part_6 "ModelType_6" (cost=0.56..5.37 rows=1 width=348) (actual time=0.042..0.042 rows=1 loops=1)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_7_address_id_idx on addresses_part_7 "ModelType_7" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_8_address_id_idx on addresses_part_8 "ModelType_8" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_9_address_id_idx on addresses_part_9 "ModelType_9" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_10_address_id_idx on addresses_part_10 "ModelType_10" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_11_address_id_idx on addresses_part_11 "ModelType_11" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_12_address_id_idx on addresses_part_12 "ModelType_12" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_13_address_id_idx on addresses_part_13 "ModelType_13" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_14_address_id_idx on addresses_part_14 "ModelType_14" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_15_address_id_idx on addresses_part_15 "ModelType_15" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_16_address_id_idx on addresses_part_16 "ModelType_16" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_17_address_id_idx on addresses_part_17 "ModelType_17" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_18_address_id_idx on addresses_part_18 "ModelType_18" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
-> Index Scan using addresses_part_19_address_id_idx on addresses_part_19 "ModelType_19" (cost=0.56..5.37 rows=1 width=348) (never executed)
Index Cond: ((address_id)::text = ("Model".address_id)::text)
Planning Time: 9127.562 ms
Execution Time: 1.090 ms
如果我从结果中加上"实际时间",我不是应该得到相同的秒数吗?为什么会有这么大的差别?