PlannerIMDB — JOB-18C

SELECT MIN(mi.info) AS movie_budget,
       MIN(mi_idx.info) AS movie_votes,
       MIN(t.title) AS movie_title
FROM job.cast_info AS ci,
     job.info_type AS it1,
     job.info_type AS it2,
     job.movie_info AS mi,
     job.movie_info_idx AS mi_idx,
     job.name AS n,
     job.title AS t
WHERE ci.note IN ('(writer)',
                  '(head writer)',
                  '(written by)',
                  '(story)',
                  '(story editor)')
  AND it1.info = 'genres'
  AND it2.info = 'votes'
  AND mi.info IN ('Horror',
                  'Action',
                  'Sci-Fi',
                  'Thriller',
                  'Crime',
                  'War')
  AND n.gender = 'm'
  AND t.id = mi.movie_id
  AND t.id = mi_idx.movie_id
  AND t.id = ci.movie_id
  AND ci.movie_id = mi.movie_id
  AND ci.movie_id = mi_idx.movie_id
  AND mi.movie_id = mi_idx.movie_id
  AND n.id = ci.person_id
  AND it1.id = mi.info_type_id
  AND it2.id = mi_idx.info_type_id;

Engine Compare

Accuracy chart, rows processed ?
Scan
Scan
Seek
Seek
Join Probe
Join
Sort
Sort
Hash Build
Hash
Aggregate
Agg
Distribute
Dist
Native storage
Estimation Error
Est Err
5,224,050
5.2M
Rank
Estimation Error
Est Err
5,379,555
5.4M
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
636,990
637K
Rank
Estimation Error
Est Err
28,073
28K
Rank
Estimation Error
Est Err
0
Rank
Native storage
Estimation Error
Est Err
56,727,992
57M
Rank
Estimation Error
Est Err
964,075,315
964M
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
509,248,362
509M
Rank
Estimation Error
Est Err
8,617,617
8.6M
Rank
Estimation Error
Est Err
0
Rank
Native storage
Estimation Error
Est Err
7,067,767
7.1M
Rank
Estimation Error
Est Err
4,547,798
4.5M
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
3,767,656
3.8M
Rank
Estimation Error
Est Err
28,074
28K
Rank
Estimation Error
Est Err
3,357,486
3.4M
Rank
Apache Iceberg
Estimation Error
Est Err
22,805,476
23M
Rank
Estimation Error
Est Err
4,245,665
4.2M
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
3,481,676
3.5M
Rank
Estimation Error
Est Err
28,083
28K
Rank
Estimation Error
Est Err
7,254,942
7.3M
Rank
Native storage
Estimation Error
Est Err
4,130,223
4.1M
Rank
Estimation Error
Est Err
4,450,446
4.5M
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
4,861,050
4.9M
Rank
Estimation Error
Est Err
28,073
28K
Rank
Estimation Error
Est Err
0
Rank
Native storage
Estimation Error
Est Err
2,024,710
2M
Rank
Estimation Error
Est Err
644,675
645K
Rank
Estimation Error
Est Err
2,129,596
2.1M
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
477,171
477K
Rank
Estimation Error
Est Err
28,076
28K
Rank
Estimation Error
Est Err
0
Rank
Native storage
Estimation Error
Est Err
5,954,946
6M
Rank
Estimation Error
Est Err
5,954,833
6M
Rank
Estimation Error
Est Err
5,855,098
5.9M
Rank
Estimation Error
Est Err
108,310
108K
Rank
Estimation Error
Est Err
5,987,537
6M
Rank
Estimation Error
Est Err
28,083
28K
Rank
Estimation Error
Est Err
0
Rank
Apache Iceberg
Estimation Error
Est Err
4,982,960
5M
Rank
Estimation Error
Est Err
416,091
416K
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
5,061,801
5.1M
Rank
Estimation Error
Est Err
28,089
28K
Rank
Estimation Error
Est Err
4,914,428
4.9M
Rank

Actual Query Plans

Query Plan per Engine ?
Query Plan
Native storage
Estimate    Actual  Operator
       1         1  AGGREGATE min, min, min
   63921     28073  INNER JOIN HASH ON id49 = movie_id29
   60595     28073  │└INNER JOIN HASH ON id = info_type_id
       1         1   │└TABLE SCAN info_type WHERE info = genres
   60595     29399   INNER JOIN HASH ON id37 = person_id
  128316     55981   │└INNER JOIN HASH ON movie_id29 = movie_id20
  144458    104892    │└INNER JOIN HASH ON id6 = info_type_id21
       1         1     │└TABLE SCAN info_type WHERE info = votes
  346185    315079     INNER JOIN HASH ON movie_id = movie_id20
  246296    188971     │└TABLE SCAN movie_info WHERE info BETWEEN Action AND War AND info14 IN(Action,Crime,Horror,Sci - Fi,Thriller,War)
 1380035   1380035     TABLE SCAN movie_info_idx
 1274215    567218    TABLE SCAN cast_info WHERE note BETWEEN (head writer) AND (written by) AND note31 IN((head writer),(story editor),story,writer,(written by))
 1778509    559512   TABLE SCAN name WHERE gender = m
 2528312   2528312  TABLE SCAN title
Native storage
Estimate    Actual  Operator
       -         1  PROJECT a1 AS movie_budget, a2 AS movie_votes, a3 AS movie_title
       -         1  AGGREGATE MIN(info_left) AS a1, MIN(info_right) AS a2, MIN(title) AS a3
       -   8617617  PROJECT info, info, title
       -   8617617  PROJECT info, info, title
       -   8617617  INNER JOIN HASH ON tuple(PROJECTION_1565.movie_id,PROJECTION_1565.movie_id,PROJECTION_1565.movie_id,PROJECTION_1565.movie_id) = tuple(PROJECTION_1550.movie_id,PROJECTION_1550.movie_id,PROJECTION_1550.id,PROJECTION_1550.id)
       -    459925  │└PROJECT movie_id AS movie_id_right, id, info AS info_right, title
       -    459925   PROJECT info, movie_id, title, id
       -    459925   INNER JOIN HASH ON PROJECTION_1562.id = PROJECTION_1553.movie_id
       -    459925   │└PROJECT movie_id, info
       -    459925    PROJECT info, movie_id
       -    459925    INNER JOIN HASH ON PROJECTION_1559.info_type_id = PROJECTION_1556.id
       -         1    │└PROJECT id
       -         1     PROJECT id
       -         1     TABLE SCAN info_type WHERE info = 'votes'
       -   1380035    PROJECT info_type_id, info, movie_id
       -   1380035    PROJECT info, movie_id, info_type_id
       -   1380035    TABLE SCAN movie_info_idx
       -   2528312   PROJECT id, title
       -   2528312   PROJECT title, id
       -   2528312   TABLE SCAN title
       -  13216524  PROJECT movie_id_left, movie_id AS movie_id_left_2, info AS info_left
       -  13216524  PROJECT movie_id, info, movie_id
       -  13216524  INNER JOIN HASH ON PROJECTION_1571.person_id = PROJECTION_1568.id
       -   1739579  │└PROJECT id
       -   1739579   PROJECT id
       -   1739579   TABLE SCAN name WHERE gender = 'm'
       -  26038298  PROJECT person_id, movie_id, info, movie_id
       -  26038298  PROJECT movie_id, person_id, info, movie_id
       -  26038298  INNER JOIN HASH ON PROJECTION_1577.info_type_id = PROJECTION_1574.id
       -         1  │└PROJECT id
       -         1   PROJECT id
       -         1   TABLE SCAN info_type WHERE info = 'genres'
       -      460M  PROJECT info_type_id, movie_id, person_id, info, movie_id
       -      460M  PROJECT movie_id, person_id, info, movie_id, info_type_id
       -      460M  INNER JOIN HASH ON PROJECTION_1583.movie_id = PROJECTION_1580.movie_id
       -  14835720  │└PROJECT movie_id AS movie_id_right, info, info_type_id
       -  14835720   PROJECT movie_id, info, info_type_id
       -  14835720   TABLE SCAN movie_info WHERE TRUE
       -  36244344  PROJECT movie_id AS movie_id_left, person_id
       -  36244344  PROJECT movie_id, person_id
       -  36244344  TABLE SCAN cast_info WHERE TRUE
Native storage
Estimate    Actual  Operator
       -         1  AGGREGATE MIN(#0), MIN(#1), MIN(#2)
     889     28073  PROJECT info, info, title
     889     28073  INNER JOIN HASH ON id = person_id
    1534     54155  │└INNER JOIN HASH ON movie_id = id
     525    102516   │└INNER JOIN HASH ON id = movie_id
     516    102516    │└INNER JOIN HASH ON info_type_id = id
       2         1     │└FILTER id <= 110
       2         1      TABLE SCAN info_type WHERE info = 'genres'
   29178    102516     INNER JOIN HASH ON movie_id = movie_id
   24425    459925     │└INNER JOIN HASH ON info_type_id = id
       2         1      │└FILTER id >= 99
       2         1       TABLE SCAN info_type WHERE info = 'votes'
 1380035    459925      TABLE SCAN movie_info_idx
 2967144    123764     FILTER movie_id BETWEEN 2 AND 2525793
 2967144    123765     FILTER IN ...
14835720    774535     INNER JOIN HASH ON info = #0
       0         6     │└SCAN MATERIALISED
14835720    774535     TABLE SCAN movie_info WHERE info IN('Horror','Action','Sci-Fi','Thriller','Crime','War')
 2528312     78521    TABLE SCAN title WHERE id >= 2 AND id <= 2525793
 7248868     39691   FILTER movie_id BETWEEN 2 AND 2525793
 7248868     39691   FILTER IN ...
36244344   2804962   INNER JOIN HASH ON note = #0
       0         5   │└SCAN MATERIALISED
36244344   2804962   TABLE SCAN cast_info WHERE note IN('(writer)','(head writer)','(written by)','(story)','(story editor)')
 2083746     12267  FILTER id <= 4061926
 2083746     12267  TABLE SCAN "name" WHERE gender = 'm'
Apache Iceberg
Estimate    Actual  Operator
       1         1  PROJECT movie_budget, movie_votes, movie_title
       1         1  AGGREGATE MIN(info), MIN(info), MIN(title)
  833499        10  DISTRIBUTE GATHER
  833499        10  AGGREGATE MIN(info), MIN(info), MIN(title)
  833499     28073  INNER JOIN HASH ON movie_id = id AND movie_id = id AND movie_id = id
  833499     28073  │└DISTRIBUTE HASH ON movie_id, movie_id, movie_id
  833499     28073   INNER JOIN HASH ON id = person_id
  833499   1739579   │└DISTRIBUTE HASH ON id
  833499   1739579    FILTER gender = 'm'
 4167491   1846761    TABLE SCAN name WHERE gender = 'm'
 1380035     54155   DISTRIBUTE HASH ON person_id
 1380035     54155   INNER JOIN HASH ON id = info_type_id
      23         1   │└DISTRIBUTE GATHER
      23         1    FILTER info = 'votes'
     113       113    DISTRIBUTE ROUND ROBIN
     113       113    TABLE SCAN info_type WHERE info = 'votes'
 1380035    162621   PROJECT person_id, movie_id, movie_id, info, movie_id, info_type_id, info
 1380035    162621   INNER JOIN HASH ON movie_id = movie_id AND movie_id = movie_id
 1380035   1380035   │└DISTRIBUTE HASH ON movie_id, movie_id
 1380035   1380035    TABLE SCAN movie_info_idx WHERE ((info_type_id >= 100) AND (info_type_id <= 100)) AND info_type_id IN 100
 1780068     93240   DISTRIBUTE HASH ON movie_id, movie_id
 1780068     93240   INNER JOIN HASH ON id = info_type_id
      23         1   │└DISTRIBUTE GATHER
      23         1    FILTER info = 'genres'
     113       113    DISTRIBUTE ROUND ROBIN
     113       113    TABLE SCAN info_type WHERE info = 'genres'
 8513371     93240   PROJECT person_id, movie_id, movie_id, info_type_id, info
 8513371     93240   INNER JOIN HASH ON movie_id = movie_id
 2967144    186594   │└DISTRIBUTE HASH ON movie_id
 2967144    186594    FILTER info IN('Horror','Action','Sci-Fi','Thriller','Crime','War')
14835720   1724005    TABLE SCAN movie_info WHERE (info IN('Horror','Action','Sci-Fi','Thriller','Crime','War') AND (((info_type_id >= 3) AND (info_type_id <= 3)) AND info_type_id IN 3)) AND CASE MOD(HASH_REPARTITION(movie_id,movie_id),10) WHEN 1 THEN ((((movie_id >= 57) AND (movie_id <= 2525790)) AND ((movie_id >= 57) AND (movie_id <= 2525790))) AND TRUE) WHEN 3 THEN ((((movie_id >= 11) AND (movie_id <= 2525784)) AND ((movie_id >= 11) AND (movie_id <= 2525784))) AND TRUE) WHEN 5 THEN (...
 7248869   1244716   DISTRIBUTE HASH ON movie_id
 7248869   1244716   FILTER note IN('(writer)','(head writer)','(written by)','(story)','(story editor)')
36244344  15326137   TABLE SCAN cast_info WHERE (note IN('(writer)','(head writer)','(written by)','(story)','(story editor)') AND CASE MOD(HASH_REPARTITION movie_id,10) WHEN 0 THEN (((movie_id >= 963) AND (movie_id <= 2525735)) AND TRUE) WHEN 1 THEN (((movie_id >= 1668) AND (movie_id <= 2525766)) AND TRUE) WHEN 2 THEN (((movie_id >= 979) AND (movie_id <= 2525787)) AND TRUE) WHEN 3 THEN (((movie_id >= 405) AND (movie_id <= 2525793)) AND TRUE) WHEN 4 THEN (((movie_id >= 3552) AND (movie_id ...
 2528312   2528312  DISTRIBUTE HASH ON id, id, id
 2528312   2528312  TABLE SCAN title WHERE CASE MOD(HASH_REPARTITION(id,id,id),10) WHEN 0 THEN (((((id >= 35089) AND (id <= 2523213)) AND ((id >= 35089) AND (id <= 2523213))) AND ((id >= 35089) AND (id <= 2523213))) AND TRUE) WHEN 1 THEN (((((id >= 44673) AND (id <= 2524953)) AND ((id >= 44673) AND (id <= 2524953))) AND ((id >= 44673) AND (id <= 2524953))) AND TRUE) WHEN 2 THEN (((((id >= 25695) AND (id <= 2525374)) AND ((id >= 25695) AND (id <= 2525374))) AND ((id >= 25695) AND (id <= 252537...
Native storage
Estimate    Actual  Operator
       1         1  AGGREGATE MIN(mi.info), MIN(mi_idx.info), MIN(t.title)
       1         1  DISTRIBUTE GATHER
       1         1  AGGREGATE MIN(mi.info), MIN(mi_idx.info), MIN(t.title)
     254     28073  INNER JOIN HASH ON ci.person_id = n.id
     254   1739579  │└DISTRIBUTE GATHER
14800000   1739579   TABLE SCAN name WHERE (n.gender IS NOT NULL) AND (n.gender = 'm')
     254     54155  INNER JOIN HASH ON mi.movie_id = ci.movie_id
     254   1244716  │└DISTRIBUTE GATHER
     113   1244716   TABLE SCAN cast_info WHERE ci.note IN('(writer)','(head writer)','(written by)','(story)','(story editor)')
     113    102516  INNER JOIN HASH ON mi_idx.info_type_id = it2.id
     113         1  │└DISTRIBUTE GATHER
 1380000         1   TABLE SCAN info_type WHERE it2.info = 'votes'
     113    307657  INNER JOIN HASH ON mi.movie_id = mi_idx.movie_id
     113    186594  │└DISTRIBUTE GATHER
      36    186594   INNER JOIN HASH ON mi.movie_id = t.id
      36    186594   │└DISTRIBUTE GATHER
      34    186594    INNER JOIN HASH ON mi.info_type_id = it1.id
      34         1    │└DISTRIBUTE GATHER
 4170000         1     TABLE SCAN info_type WHERE it1.info = 'genres'
36200000    186594    TABLE SCAN movie_info WHERE mi.info IN('Horror','Action','Sci-Fi','Thriller','Crime','War')
     113   2520894   TABLE SCAN title
 2530000   1375982  TABLE SCAN movie_info_idx
Native storage
Estimate    Actual  Operator
       1         1  AGGREGATE MIN(partialagg1040) AS Expr1014, MIN(partialagg1041) AS Expr1015, MIN(partialagg1042) AS Expr1016
       5        10  AGGREGATE MIN(info as info) AS partialagg1040, MIN(info as info) AS partialagg1041, MIN(title as title) AS partialagg1042
     344     28073  INNER JOIN LOOP ON Bmk1012 = Bmk1012
       1     28073  │└TABLE SEEK title AS t
     344     28073  PROJECT BmkToPage Bmk1012 AS Expr2067
     344     28073  INNER JOIN LOOP ON mi_idx.movie_id = t.id
       1     28073  │└TABLE SEEK title AS t
     344     28073  FILTER gender as gender = 'm'
     829     54155  INNER JOIN LOOP ON Bmk1010 = Bmk1010
       1     54155  │└TABLE SEEK name AS n
     829     54155  SORT Expr1077
     829     54155  PROJECT BmkToPage Bmk1010 AS Expr1077
     829     54155  INNER JOIN LOOP ON ci.person_id = n.id
       1     54155  │└TABLE SEEK name AS n
     826     54155  SORT person_id
     826     54155  INNER JOIN HASH ON mi_idx.info_type_id = it2.id
       1         1  │└FILTER info as info = 'votes'
     113       113   TABLE SCAN info_type AS it2
     413     54155  INNER JOIN HASH ON mi.info_type_id = it1.id
       1         1  │└FILTER info as info = 'genres'
     113       113   INNER JOIN LOOP ON Bmk1002 = Bmk1002
       1       113   │└TABLE SEEK info_type AS it1
     113       113   TABLE SEEK info_type AS it1
     289     54155  INNER JOIN HASH ON mi_idx.movie_id = mi.movie_id
    1560    186594  │└TABLE SEEK movie_info AS mi WHERE (info as info = 'Action' OR info as info = 'Crime' OR info as info = 'Horror' OR info as info = 'Sci-Fi' OR info as info = 'Thriller' OR info as info = 'War') AND BLOOM(info_type_id as info_type_id)
     114     38275  FILTER note as note = '(head writer)' OR note as note = '(story editor)' OR note as note = '(story)' OR note as note = '(writer)' OR note as note = '(written by)'
    4170   2764032  INNER JOIN LOOP ON Bmk1000 = Bmk1000
       1   2764032  │└TABLE SEEK cast_info AS ci
    4170   2764032  PROJECT BmkToPage Bmk1000 AS Expr2062
    4170   2764032  INNER JOIN LOOP ON mi_idx.movie_id = ci.movie_id
      30   2764032  │└TABLE SEEK cast_info AS ci
  138004     75493  TABLE SEEK movie_info_idx AS mi_idx WHERE BLOOM(movie_id as movie_id) AND BLOOM(info_type_id as info_type_id)
Apache Iceberg
Estimate    Actual  Operator
       1         ∞  PROJECT min AS movie_budget, min_35 AS movie_votes, min_36 AS movie_title
       1         1  AGGREGATE MIN(min_37) AS min, MIN(min_38) AS min_35, MIN(min_39) AS min_36
       -        16  DISTRIBUTE GATHER
       -        16  AGGREGATE MIN(info_11) AS min_37, MIN(info_19) AS min_38, MIN(title) AS min_39
       -     28073  INNER JOIN HASH ON movie_id = id_28
 2528312   2528312  │└DISTRIBUTE HASH ON id_28
 2528312   2528312   PROJECT id AS id_28, title
 2528312   2528312   TABLE SCAN title
       -     28073  INNER JOIN HASH ON person_id = id_24
 4167491   1739579  │└DISTRIBUTE HASH ON id_24
 4167491   1739579   PROJECT id AS id_24
 4167491   1739579   FILTER gender = 'm'
 4167491   1739579   TABLE SCAN name
       -     54155  INNER JOIN HASH ON info_type_id_18 = id_4
     113         1  │└DISTRIBUTE GATHER
     113         1   PROJECT id AS id_4
     113         1   FILTER info = 'votes'
     113         1   TABLE SCAN info_type
       -     54155  INNER JOIN HASH ON movie_id = movie_id_17
 1380035    459925  │└DISTRIBUTE HASH ON movie_id_17
 1380035    459925   PROJECT movie_id AS movie_id_17, info_type_id AS info_type_id_18, info AS info_19
 1380035    459925   TABLE SCAN movie_info_idx
       -     93236  INNER JOIN HASH ON info_type_id = id_0
     113         1  │└DISTRIBUTE GATHER
     113         1   PROJECT id AS id_0
     113         1   FILTER info = 'genres'
     113         1   TABLE SCAN info_type
       -     93236  INNER JOIN HASH ON movie_id = movie_id_10
13352148    186594  │└DISTRIBUTE HASH ON movie_id_10
13352148    186594   PROJECT movie_id AS movie_id_10, info_type_id, info AS info_11
13352148    186594   FILTER info IN('Action','Crime','Horror','Sci-Fi','Thriller','War')
13352148    186594   TABLE SCAN movie_info
32619910     68548  FILTER note IN('(head writer)','(story editor)','(story)','(writer)','(written by)')
32619910     68548  TABLE SCAN cast_info
Native storage
Estimate    Actual  Operator
       1         1  AGGREGATE MIN(info), MIN(info), MIN(title)
       3         3  AGGREGATE PARTIAL MIN(info), PARTIAL MIN(info), PARTIAL MIN(title)
      30     28073  INNER JOIN LOOP ON id = movie_id AND movie_id = id AND (movie_id = id)
      30     28073  │└INNER JOIN LOOP ON id = person_id
      72     54155   │└INNER JOIN LOOP ON movie_id = movie_id AND movie_id = movie_id AND (movie_id = movie_id)
      19     34172    │└INNER JOIN HASH ON info_type_id = id
       3         3     │└TABLE SEEK info_type AS it1
    6309    104892     INNER JOIN LOOP ON movie_id = movie_id
    5089    153308     │└INNER JOIN HASH ON info_type_id = id
       3         3      │└TABLE SEEK info_type AS it2
 1725045   1380035      TABLE SCAN movie_info_idx AS mi_idx
  459925    459925     TABLE SEEK movie_info AS mi WHERE mi.info IN('Horror','Action','Sci-Fi','Thriller','Crime','War')
  102516    102516    TABLE SEEK cast_info AS ci WHERE ci.note IN('(writer)','(head writer)','(written by)','(story)','(story editor)')
   54155     54155   TABLE SEEK name AS n WHERE n.gender = 'm'
   28073     28073  TABLE SEEK title AS t