PlannerTPC-H — TPCH-Q15

Engine Compare

Accuracy chart, rows processed ?
Scan
Scan
Join Probe
Join
Sort
Sort
Hash Build
Hash
Aggregate
Agg
Distribute
Dist
DuckDB
268,122 rows
268K
68,122 rows
68K
0 rows
0
200,000 rows
200K
68,122 rows
68K
0 rows
0
PostgreSQL
268,120 rows
268K
68,120 rows
68K
0 rows
0
200,000 rows
200K
68,125 rows
68K
0 rows
0
SQL Server
268,122 rows
268K
200,000 rows
200K
0 rows
0
68,122 rows
68K
68,122 rows
68K
0 rows
0

Actual Query Plans

Query Plan per Engine ?
Query Plan
PostgreSQL
Estimate    Actual  Operator
       1         1  GROUP BY SIMPLE AGGREGATE (100.00 * SUM(CASE WHEN(p_type LIKE'PROMO%') THEN(l_extendedprice * ('1' - l_discount)) ELSE'0'END)) / SUM(l_extendedprice * ('1' - l_discount))
       5         5  GROUP BY SIMPLE AGGREGATE PARTIALSUM(CASE WHEN(p_type LIKE'PROMO%') THEN(l_extendedprice * ('1' - l_discount)) ELSE'0'END), PARTIALSUM(l_extendedprice * ('1' - l_discount))
   82655     68120  INNER JOIN HASH ON l_partkey = p_partkey
  416665    200000  │└TABLE SCAN part
   82655     68120  TABLE SCAN lineitem WHERE (l_shipdate >= '1996-02-01') AND (l_shipdate < '1996-03-01')
DuckDB
Estimate    Actual  Operator
       1         1  PROJECT promo_revenue
 1201548         1  GROUP BY SIMPLE AGGREGATE SUM(#0), SUM(#1)
 1201548     68122  PROJECT CASE WHEN(prefix(p_type,'PROMO')) THEN(l_extendedprice * (1.000 - l_discount)) ELSE 0.000000 END, l_extendedprice * (1.000 - l_discount)
 1201548     68122  INNER JOIN HASH ON l_partkey = p_partkey
  200000    200000  │└TABLE SCAN part
 1199764     68122  TABLE SCAN lineitem WHERE l_shipdate >= '1996-02-01' AND l_shipdate < '1996-03-01'
SQL Server
Estimate    Actual  Operator
       1         ∞  PROJECT 100.00 * Expr1005 / Expr1006 AS Expr1007
       1         1  PROJECT CASE WHEN Expr1017 = 0 THEN NULL ELSE Expr1018 END AS Expr1005, CASE WHEN Expr1019 = 0 THEN NULL ELSE Expr1020 END AS Expr1006
       1         1  GROUP BY HASH AGGREGATE COUNT(CASE WHEN p_type LIKE 'PROMO%'THEN l_extendedprice * (1. - l_discount) ELSE 0.0000 END) AS Expr1017, SUM(CASE WHEN p_type LIKE 'PROMO%'THEN l_extendedprice * (1. - l_discount) ELSE 0.0000 END) AS Expr1018, COUNT(Expr1008) AS Expr1019, SUM(Expr1008) AS Expr1020
   68044     68122  INNER JOIN HASH ON p_partkey = l_partkey
   68044     68122  │└PROJECT l_extendedprice * (1. - l_discount) AS Expr1008
   68044     68122   TABLE SCAN lineitem
  200000    200000  TABLE SEEK part