PlannerTPC-H — TPCH-Q11

Engine Compare

Accuracy chart, rows processed ?
Scan
Scan
Join Probe
Join
Sort
Sort
Hash Build
Hash
Aggregate
Agg
Distribute
Dist
ClickHouse
Estimation Error
Est Err
Row Operations
Ops
610,001
610K
Rank
Estimation Error
Est Err
Row Operations
Ops
1,199,941
1.2M
Rank
Estimation Error
Est Err
Row Operations
Ops
24,359
24K
Rank
Estimation Error
Est Err
Row Operations
Ops
625,860
626K
Rank
Estimation Error
Est Err
Row Operations
Ops
25,919
26K
Rank
Estimation Error
Est Err
Row Operations
Ops
0
0
Rank
DuckDB
Estimation Error
Est Err
Row Operations
Ops
1,194,028
1.2M
Rank
Estimation Error
Est Err
Row Operations
Ops
1,215,082
1.2M
Rank
Estimation Error
Est Err
Row Operations
Ops
2,806
2.8K
Rank
Estimation Error
Est Err
Row Operations
Ops
48,064
48K
Rank
Estimation Error
Est Err
Row Operations
Ops
44,517
45K
Rank
Estimation Error
Est Err
Row Operations
Ops
0
0
Rank
PostgreSQL
Estimation Error
Est Err
Row Operations
Ops
610,001
610K
Rank
Estimation Error
Est Err
Row Operations
Ops
610,000
610K
Rank
Estimation Error
Est Err
Row Operations
Ops
25,062
25K
Rank
Estimation Error
Est Err
Row Operations
Ops
23,740
24K
Rank
Estimation Error
Est Err
Row Operations
Ops
22,256
22K
Rank
Estimation Error
Est Err
Row Operations
Ops
0
0
Rank
SQL Server
Estimation Error
Est Err
Row Operations
Ops
1,220,002
1.2M
Rank
Estimation Error
Est Err
Row Operations
Ops
1,222,806
1.2M
Rank
Estimation Error
Est Err
Row Operations
Ops
2,806
2.8K
Rank
Estimation Error
Est Err
Row Operations
Ops
66,314
66K
Rank
Estimation Error
Est Err
Row Operations
Ops
44,516
45K
Rank
Estimation Error
Est Err
Row Operations
Ops
0
0
Rank

Actual Query Plans

Query Plan per Engine ?
Query Plan
ClickHouse
Estimate    Actual  Operator
       -     24359  PROJECT SUM(ps_supplycost * ps_availqty)
       -     24359  SORT SUM(ps_supplycost * ps_availqty)
       -     24359  FILTER SUM(ps_supplycost * ps_availqty) > 6445634.067364
       -     24359  GROUP BY HASH ps_partkey AGGREGATE SUM(ps_supplycost * ps_availqty)
       -     25919  PROJECT ps_supplycost * ps_availqty
       -     25919  INNER JOIN HASH ON s_nationkey = n_nationkey
       -         1  │└TABLE SCAN nation WHERE n_name = 'JAPAN'
       -    599941  INNER JOIN HASH ON ps_suppkey = s_suppkey
       -     10000  │└TABLE SCAN supplier
       -    600000  TABLE SCAN partsupp
DuckDB
Estimate    Actual  Operator
       -      2806  SORT SUM(ps_supplycost * ps_availqty)
      51      2806  PROJECT ps_partkey, v
      51      2806  INNER JOIN LOOP ON CAST(SUM(ps_supplycost * CAST(ps_availqty AS DECIMAL(18,0))) AS DECIMAL(38,6)) > SUBQUERY
       -         1  │└GROUP BY SIMPLE AGGREGATE "first" #0, count_star()
       1         1   PROJECT SUM(ps_supplycost * CAST(ps_availqty AS DECIMAL(18,0))) * 0.0001
       -         1   GROUP BY SIMPLE AGGREGATE SUM(#0)
   26793     22258   PROJECT ps_supplycost * CAST(ps_availqty AS DECIMAL(18,0))
   26793     22258   INNER JOIN HASH ON ps_suppkey = s_suppkey
     384       371   │└INNER JOIN HASH ON s_nationkey = n_nationkey
       1         1    │└TABLE SCAN nation WHERE n_name = 'JAPAN'
   10000       371    TABLE SCAN supplier
  600000    596642   TABLE SCAN partsupp WHERE ps_suppkey >= 1
   21744     21056  GROUP BY HASH #0 AGGREGATE SUM(#1)
   26793     22258  PROJECT ps_partkey, ps_supplycost * CAST(ps_availqty AS DECIMAL(18,0))
   26793     22258  INNER JOIN HASH ON ps_suppkey = s_suppkey
     384       371  │└INNER JOIN HASH ON s_nationkey = n_nationkey
       1         1   │└TABLE SCAN nation WHERE n_name = 'JAPAN'
   10000       371   TABLE SCAN supplier
  600000    596642  TABLE SCAN partsupp WHERE ps_suppkey >= 1
SQL Server
Estimate    Actual  Operator
    6643      2806  SORT Expr1007
    6643      2806  INNER JOIN LOOP ON n_name = 'JAPAN'
   22146     21056  │└PROJECT CASE WHEN Expr1029 = 0 THEN NULL ELSE Expr1030 END AS Expr1007
   22146     21056   GROUP BY HASH AGGREGATE COUNT(Expr1017) AS Expr1029, SUM(Expr1017) AS Expr1030
   24025     22258   INNER JOIN HASH ON s_suppkey = ps_suppkey
     400       371   │└INNER JOIN HASH ON n_nationkey = s_nationkey
       1         1    │└TABLE SEEK nation WHERE n_name = 'JAPAN'
   10000     10000    TABLE SEEK supplier
  600000    600000   PROJECT ps_supplycost * CONVERT_IMPLICIT(decimal(10,0),ps_availqty,0) AS Expr1017
  600000    600000   TABLE SCAN partsupp
       1         1  PROJECT CASE WHEN Expr1027 = 0 THEN NULL ELSE Expr1028 END AS Expr1015
       1         1  GROUP BY HASH AGGREGATE COUNT(Expr1018) AS Expr1027, SUM(Expr1018) AS Expr1028
   24025     22258  INNER JOIN HASH ON s_suppkey = ps_suppkey
     400       371  │└INNER JOIN HASH ON n_nationkey = s_nationkey
       1         1   │└TABLE SEEK nation WHERE n_name = 'JAPAN'
   10000     10000   TABLE SEEK supplier
  600000    600000  PROJECT ps_supplycost * CONVERT_IMPLICIT(decimal(10,0),ps_availqty,0) AS Expr1018
  600000    600000  TABLE SCAN partsupp
PostgreSQL
Estimate    Actual  Operator
    7996      2806  SORT SUM(ps_supplycost * ps_availqty)
    7996      2806  GROUP BY SORT ps_partkey AGGREGATE SUM(ps_supplycost * ps_availqty)
   30952     22256  SORT ps_partkey
   30952     22256  INNER JOIN HASH ON ps_suppkey = s_suppkey
    1600      1484  │└INNER JOIN HASH ON s_nationkey = n_nationkey
       1         1   │└TABLE SCAN nation WHERE n_name = 'JAPAN'
   10000     10000   TABLE SCAN supplier
  774192    600000  TABLE SCAN partsupp