Planner — TPC-H
Summary
Scan Scan | Join Probe Join | Sort Sort | Hash Build Hash | Aggregate Agg | Distribute Dist | |
|---|---|---|---|---|---|---|
![]() DuckDB | 94,038,317 rows 94M | 73,464,064 rows 73M | 49,299 rows 49K | 8,005,076 rows 8M | 14,301,611 rows 14M | 0 rows 0 |
![]() PostgreSQL | 71,039,046 rows 71M | 49,181,305 rows 49M | 14,020,641 rows 14M | 16,394,342 rows 16M | 16,821,748 rows 17M | 0 rows 0 |
![]() SQL Server | 80,075,483 rows 80M | 65,763,323 rows 66M | 375,611 rows 376K | 6,309,248 rows 6.3M | 14,296,662 rows 14M | 0 rows 0 |
Breakdown
Scan Scan | Join Probe Join | Sort Sort | Hash Build Hash | Aggregate Agg | Distribute Dist | |
|---|---|---|---|---|---|---|
| TPCH-Q01 | ||||||
![]() DuckDB | 5,642,532 rows 5.6M | 0 rows 0 | 4 rows 4 | 0 rows 0 | 5,642,532 rows 5.6M | 0 rows 0 |
![]() PostgreSQL | 5,642,530 rows 5.6M | 0 rows 0 | 5,642,530 rows 5.6M | 0 rows 0 | 5,642,550 rows 5.6M | 0 rows 0 |
![]() SQL Server | 5,642,532 rows 5.6M | 0 rows 0 | 4 rows 4 | 0 rows 0 | 5,642,532 rows 5.6M | 0 rows 0 |
| TPCH-Q02 | ||||||
![]() DuckDB | 1,197,599 rows 1.2M | 1,201,489 rows 1.2M | 346 rows 346 | 12,706 rows 13K | 473 rows 473 | 0 rows 0 |
![]() PostgreSQL | 614,602 rows 615K | 621,442 rows 621K | 346 rows 346 | 133,172 rows 133K | 1,145 rows 1.1K | 0 rows 0 |
![]() SQL Server | 610,825 rows 611K | 614,728 rows 615K | 819 rows 819 | 7,565 rows 7.6K | 473 rows 473 | 0 rows 0 |
| TPCH-Q03 | ||||||
![]() DuckDB | 4,111,077 rows 4.1M | 4,080,841 rows 4.1M | 10 rows 10 | 276,724 rows 277K | 28,114 rows 28K | 0 rows 0 |
![]() PostgreSQL | 4,111,171 rows 4.1M | 4,080,935 rows 4.1M | 28,125 rows 28K | 276,720 rows 277K | 28,115 rows 28K | 0 rows 0 |
![]() SQL Server | 4,111,171 rows 4.1M | 4,080,935 rows 4.1M | 10 rows 10 | 276,724 rows 277K | 28,114 rows 28K | 0 rows 0 |
| TPCH-Q04 | ||||||
![]() DuckDB | 6,050,773 rows 6.1M | 3,974,931 rows 4M | 5 rows 5 | 231,607 rows 232K | 47,831 rows 48K | 0 rows 0 |
![]() PostgreSQL | 3,843,516 rows 3.8M | 52,204 rows 52K | 47,832 rows 48K | 3,791,312 rows 3.8M | 47,852 rows 48K | 0 rows 0 |
![]() SQL Server | 3,843,515 rows 3.8M | 3,791,311 rows 3.8M | 5 rows 5 | 52,204 rows 52K | 47,831 rows 48K | 0 rows 0 |
| TPCH-Q05 | ||||||
![]() DuckDB | 6,330,085 rows 6.3M | 6,491,163 rows 6.5M | 5 rows 5 | 254,028 rows 254K | 6,988 rows 7K | 0 rows 0 |
![]() PostgreSQL | 6,372,861 rows 6.4M | 7,175,985 rows 7.2M | 6,995 rows 7K | 1,067,194 rows 1.1M | 7,015 rows 7K | 0 rows 0 |
![]() SQL Server | 6,372,867 rows 6.4M | 6,533,953 rows 6.5M | 5 rows 5 | 254,041 rows 254K | 6,988 rows 7K | 0 rows 0 |
| TPCH-Q06 | ||||||
![]() DuckDB | 121,011 rows 121K | 0 rows 0 | 0 rows 0 | 0 rows 0 | 121,011 rows 121K | 0 rows 0 |
![]() PostgreSQL | 120,990 rows 121K | 0 rows 0 | 0 rows 0 | 0 rows 0 | 120,995 rows 121K | 0 rows 0 |
![]() SQL Server | 121,014 rows 121K | 0 rows 0 | 0 rows 0 | 0 rows 0 | 121,014 rows 121K | 0 rows 0 |
| TPCH-Q07 | ||||||
![]() DuckDB | 7,501,210 rows 7.5M | 7,992,060 rows 8M | 10 rows 10 | 665,087 rows 665K | 12,302 rows 12K | 0 rows 0 |
![]() PostgreSQL | 7,658,824 rows 7.7M | 8,150,500 rows 8.2M | 12,300 rows 12K | 642,665 rows 643K | 12,300 rows 12K | 0 rows 0 |
![]() SQL Server | 7,658,824 rows 7.7M | 8,450,318 rows 8.5M | 10 rows 10 | 1,425,334 rows 1.4M | 12,302 rows 12K | 0 rows 0 |
| TPCH-Q08 | ||||||
![]() DuckDB | 6,539,428 rows 6.5M | 6,548,845 rows 6.5M | 2 rows 2 | 100,578 rows 101K | 2,323 rows 2.3K | 0 rows 0 |
![]() PostgreSQL | 97,230 rows 97K | 109,936 rows 110K | 2,322 rows 2.3K | 100,590 rows 101K | 2,328 rows 2.3K | 0 rows 0 |
![]() SQL Server | 6,588,582 rows 6.6M | 6,079,412 rows 6.1M | 54,959 rows 55K | 645,629 rows 646K | 2,323 rows 2.3K | 0 rows 0 |
| TPCH-Q09 | ||||||
![]() DuckDB | 6,618,379 rows 6.6M | 5,598,397 rows 5.6M | 175 rows 175 | 2,033,770 rows 2M | 245,491 rows 245K | 0 rows 0 |
![]() PostgreSQL | 1,331,548 rows 1.3M | 1,582,052 rows 1.6M | 245,492 rows 245K | 1,014,844 rows 1M | 246,192 rows 246K | 0 rows 0 |
![]() SQL Server | 8,119,783 rows 8.1M | 7,090,006 rows 7.1M | 245,841 rows 246K | 2,023,977 rows 2M | 245,666 rows 246K | 0 rows 0 |
| TPCH-Q10 | ||||||
![]() DuckDB | 1,596,791 rows 1.6M | 1,692,690 rows 1.7M | 30,170 rows 30K | 312,391 rows 312K | 108,325 rows 108K | 0 rows 0 |
![]() PostgreSQL | 1,596,845 rows 1.6M | 1,609,400 rows 1.6M | 138,495 rows 138K | 366,650 rows 367K | 108,325 rows 108K | 0 rows 0 |
![]() SQL Server | 1,596,844 rows 1.6M | 1,572,918 rows 1.6M | 30,170 rows 30K | 168,665 rows 169K | 108,325 rows 108K | 0 rows 0 |
| TPCH-Q11 | ||||||
![]() DuckDB | 1,194,028 rows 1.2M | 1,215,082 rows 1.2M | 2,806 rows 2.8K | 48,064 rows 48K | 44,517 rows 45K | 0 rows 0 |
![]() PostgreSQL | 610,001 rows 610K | 610,000 rows 610K | 25,062 rows 25K | 23,740 rows 24K | 22,256 rows 22K | 0 rows 0 |
![]() SQL Server | 1,220,002 rows 1.2M | 1,222,806 rows 1.2M | 2,806 rows 2.8K | 66,314 rows 66K | 44,516 rows 45K | 0 rows 0 |
| TPCH-Q12 | ||||||
![]() DuckDB | 2,334,081 rows 2.3M | 1,499,971 rows 1.5M | 2 rows 2 | 29,129 rows 29K | 29,129 rows 29K | 0 rows 0 |
![]() PostgreSQL | 58,259 rows 58K | 29,130 rows 29K | 29,130 rows 29K | 29,130 rows 29K | 29,140 rows 29K | 0 rows 0 |
![]() SQL Server | 1,529,129 rows 1.5M | 1,500,000 rows 1.5M | 2 rows 2 | 29,129 rows 29K | 29,129 rows 29K | 0 rows 0 |
| TPCH-Q13 | ||||||
![]() DuckDB | 1,649,945 rows 1.6M | 1,599,945 rows 1.6M | 48 rows 48 | 1,599,945 rows 1.6M | 1,749,945 rows 1.7M | 0 rows 0 |
![]() PostgreSQL | 1,649,944 rows 1.6M | 1,599,944 rows 1.6M | 1,749,992 rows 1.7M | 1,599,944 rows 1.6M | 2,049,836 rows 2M | 0 rows 0 |
![]() SQL Server | 1,649,945 rows 1.6M | 150,000 rows 150K | 48 rows 48 | 150,000 rows 150K | 1,649,945 rows 1.6M | 0 rows 0 |
| TPCH-Q14 | ||||||
![]() 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 |
| TPCH-Q15 | ||||||
![]() 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 |
| TPCH-Q16 | ||||||
![]() DuckDB | 788,721 rows 789K | 874,962 rows 875K | 15,163 rows 15K | 364,378 rows 364K | 61,214 rows 61K | 0 rows 0 |
![]() PostgreSQL | 443,535 rows 444K | 410,472 rows 410K | 76,379 rows 76K | 61,216 rows 61K | 61,216 rows 61K | 0 rows 0 |
![]() SQL Server | 722,464 rows 722K | 778,800 rows 779K | 15,163 rows 15K | 240,014 rows 240K | 122,417 rows 122K | 0 rows 0 |
| TPCH-Q17 | ||||||
![]() DuckDB | 11,841,430 rows 12M | 11,853,388 rows 12M | 0 rows 0 | 18,442 rows 18K | 6,544 rows 6.5K | 0 rows 0 |
![]() PostgreSQL | 6,187,501 rows 6.2M | 5,998,820 rows 6M | 0 rows 0 | 6,080 rows 6.1K | 188,944 rows 189K | 0 rows 0 |
![]() SQL Server | 12,363 rows 12K | 928 rows 928 | 0 rows 0 | 6,544 rows 6.5K | 6,544 rows 6.5K | 0 rows 0 |
| TPCH-Q18 | ||||||
![]() DuckDB | 6,710,479 rows 6.7M | 561,666 rows 562K | 5 rows 5 | 150,038 rows 150K | 5,998,855 rows 6M | 0 rows 0 |
![]() PostgreSQL | 13,647,640 rows 14M | 7,498,825 rows 7.5M | 5,998,860 rows 6M | 150,040 rows 150K | 7,500,950 rows 7.5M | 0 rows 0 |
![]() SQL Server | 11,997,650 rows 12M | 5,998,830 rows 6M | 5 rows 5 | 45 rows 45 | 5,998,855 rows 6M | 0 rows 0 |
| TPCH-Q19 | ||||||
![]() DuckDB | 1,699,869 rows 1.7M | 214,265 rows 214K | 0 rows 0 | 214,265 rows 214K | 97 rows 97 | 0 rows 0 |
![]() PostgreSQL | 1,026 rows 1K | 513 rows 513 | 0 rows 0 | 513 rows 513 | 99 rows 99 | 0 rows 0 |
![]() SQL Server | 331,301 rows 331K | 131,301 rows 131K | 0 rows 0 | 200,000 rows 200K | 97 rows 97 | 0 rows 0 |
| TPCH-Q20 | ||||||
![]() DuckDB | 1,242,881 rows 1.2M | 1,257,476 rows 1.3M | 145 rows 145 | 26,403 rows 26K | 6,793 rows 6.8K | 0 rows 0 |
![]() PostgreSQL | 1,396,951 rows 1.4M | 401,023 rows 401K | 145 rows 145 | 403,620 rows 404K | 600,000 rows 600K | 0 rows 0 |
![]() SQL Server | 1,466,333 rows 1.5M | 1,481,552 rows 1.5M | 25,361 rows 25K | 49,100 rows 49K | 40,470 rows 40K | 0 rows 0 |
| TPCH-Q21 | ||||||
![]() DuckDB | 18,754,973 rows 19M | 14,924,939 rows 15M | 396 rows 396 | 1,031,358 rows 1M | 4,060 rows 4.1K | 0 rows 0 |
![]() PostgreSQL | 13,599,420 rows 14M | 7,613,884 rows 7.6M | 4,456 rows 4.5K | 6,308,500 rows 6.3M | 4,060 rows 4.1K | 0 rows 0 |
![]() SQL Server | 14,367,119 rows 14M | 14,367,118 rows 14M | 396 rows 396 | 518,976 rows 519K | 4,060 rows 4.1K | 0 rows 0 |
| TPCH-Q22 | ||||||
![]() DuckDB | 1,576,781 rows 1.6M | 1,745,710 rows 1.7M | 7 rows 7 | 236,163 rows 236K | 48,823 rows 49K | 0 rows 0 |
![]() PostgreSQL | 1,518,412 rows 1.5M | 1,500,000 rows 1.5M | 12,180 rows 12K | 18,412 rows 18K | 12,180 rows 12K | 0 rows 0 |
![]() SQL Server | 1,576,976 rows 1.6M | 1,518,407 rows 1.5M | 7 rows 7 | 58,743 rows 59K | 48,817 rows 49K | 0 rows 0 |


