Hello friends ...
I'm evaluating the performance of algorithms for optimization of queries.
I am comparing results between the algorithm of Dynamic Programming and an
implementation of Kruskal's algorithm. When submitting a query that makes
reference to only 2 tables of my base, logically the same Query Plan is
shown. But the Total runtime displayed by the command Explain-Analyze
presents a variation of time very high:
Dynamic Programming Total runtime: 1204.220 ms
Kruskal Total runtime: 3744.879 ms
No change of data (insert, delete, update) in the tables was made during
the tests. The same query was submitted several times (with Kruskal and
Dynamic Programming algorithms) and the variation of results persists.
The explain analyze only reports the time to run *execute* the query.
With the same Query Plan, does not understand why this variation occurs.
In annex the Query Plans
If someone can help me.
Thank's for attention.
Tarcizio Bini
(Kruskal) QUERY PLAN
Aggregate (cost=474090.39..474090.40 rows=1 width=4) (actual
time=3744.711..3744.712 rows=1 loops=1)
- Nested Loop (cost=0.00..474086.63 rows=1501 width=4) (actual
time=33.844..3744.296 rows=573 loops=1)
Join Filter: (public.lineitem.l_quantity (subplan))
- Seq Scan on part (cost=0.00..7063.92 rows=200 width=4) (actual
time=0.245..69.567 rows=211 loops=1)
Filter: ((p_brand = 'Brand#12'::bpchar) AND (p_container = 'LG
CAN'::bpchar))
- Index Scan using i_l_partkey on lineitem (cost=0.00..95.35
rows=23 width=12) (actual time=12.459..12.482 rows=30 loops=211)
Index Cond: (public.lineitem.l_partkey = part.p_partkey)
SubPlan
- Aggregate (cost=97.35..97.37 rows=1 width=4) (actual
time=0.163..0.163 rows=1 loops=6334)
- Index Scan using i_l_partkey on lineitem
(cost=0.00..97.29 rows=23 width=4) (actual time=0.004..0.151 rows=31 loops=6334)
Index Cond: (l_partkey = $0)
Total runtime: 3744.879 ms
(12 rows)
Time: 3778,490 ms
Timing is on.
(Dynamic Programming) QUERY PLAN
Aggregate (cost=474090.39..474090.40 rows=1 width=4) (actual
time=1204.064..1204.064 rows=1 loops=1)
- Nested Loop (cost=0.00..474086.63 rows=1501 width=4) (actual
time=11.754..1203.669 rows=573 loops=1)
Join Filter: (public.lineitem.l_quantity (subplan))
- Seq Scan on part (cost=0.00..7063.92 rows=200 width=4) (actual
time=0.264..67.012 rows=211 loops=1)
Filter: ((p_brand = 'Brand#12'::bpchar) AND (p_container = 'LG
CAN'::bpchar))
- Index Scan using i_l_partkey on lineitem (cost=0.00..95.35
rows=23 width=12) (actual time=3.841..3.864 rows=30 loops=211)
Index Cond: (public.lineitem.l_partkey = part.p_partkey)
SubPlan
- Aggregate (cost=97.35..97.37 rows=1 width=4) (actual
time=0.049..0.049 rows=1 loops=6334)
- Index Scan using i_l_partkey on lineitem
(cost=0.00..97.29 rows=23 width=4) (actual time=0.004..0.037 rows=31 loops=6334)
Index Cond: (l_partkey = $0)
Total runtime: 1204.220 ms
(12 rows)
Time: 1208,423 ms
Timing is on.
--
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance