PlannerIMDB — JOB-6B

SELECT MIN(k.keyword) AS movie_keyword,
       MIN(n.name) AS actor_name,
       MIN(t.title) AS hero_movie
FROM job.cast_info AS ci,
     job.keyword AS k,
     job.movie_keyword AS mk,
     job.name AS n,
     job.title AS t
WHERE k.keyword IN ('superhero',
                    'sequel',
                    'second-part',
                    'marvel-comics',
                    'based-on-comic',
                    'tv-special',
                    'fight',
                    'violence')
  AND n.name LIKE '%Downey%Robert%'
  AND t.production_year > 2014
  AND k.id = mk.keyword_id
  AND t.id = mk.movie_id
  AND t.id = ci.movie_id
  AND ci.movie_id = mk.movie_id
  AND n.id = ci.person_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
40,768,438
41M
Rank
Estimation Error
Est Err
40,768,441
41M
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
71,862
72K
Rank
Estimation Error
Est Err
12
12
Rank
Estimation Error
Est Err
0
Rank
Native storage
Estimation Error
Est Err
40,902,884
41M
Rank
Estimation Error
Est Err
40,902,882
41M
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
1,008
1K
Rank
Estimation Error
Est Err
18
18
Rank
Estimation Error
Est Err
0
Rank
Native storage
Estimation Error
Est Err
8,969,979
9M
Rank
Estimation Error
Est Err
974,184
974K
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
465
465
Rank
Estimation Error
Est Err
451
451
Rank
Estimation Error
Est Err
469
469
Rank
Apache Iceberg
Estimation Error
Est Err
46,490,264
46M
Rank
Estimation Error
Est Err
433,095,371
433M
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
217,330,332
217M
Rank
Estimation Error
Est Err
22
22
Rank
Estimation Error
Est Err
42,467,207
42M
Rank
Native storage
Estimation Error
Est Err
144,177
144K
Rank
Estimation Error
Est Err
144,393
144K
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
134,896
135K
Rank
Estimation Error
Est Err
12
12
Rank
Estimation Error
Est Err
0
Rank
Native storage
Estimation Error
Est Err
36,760
37K
Rank
Estimation Error
Est Err
36,760
37K
Rank
Estimation Error
Est Err
71,862
72K
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
36,752
37K
Rank
Estimation Error
Est Err
12
12
Rank
Estimation Error
Est Err
0
Rank
Native storage
Estimation Error
Est Err
108,220
108K
Rank
Estimation Error
Est Err
108,212
108K
Rank
Estimation Error
Est Err
143,724
144K
Rank
Estimation Error
Est Err
1,149
1.1K
Rank
Estimation Error
Est Err
108,212
108K
Rank
Estimation Error
Est Err
12
12
Rank
Estimation Error
Est Err
0
Rank
Apache Iceberg
Estimation Error
Est Err
486
486
Rank
Estimation Error
Est Err
48
48
Rank
Estimation Error
Est Err
0
0
Rank
Estimation Error
Est Err
498
498
Rank
Estimation Error
Est Err
28
28
Rank
Estimation Error
Est Err
500
500
Rank

Actual Query Plans

Query Plan per Engine ?
Query Plan
Native storage
Estimate    Actual  Operator
       1         1  AGGREGATE min, min, min
       1        12  INNER JOIN HASH ON id38 = person_id
      15       383  │└INNER JOIN HASH ON id13 = movie_id30
       1        36   │└INNER JOIN HASH ON id13 = movie_id
     244     35548    │└INNER JOIN HASH ON id = keyword_id
       8         8     │└TABLE SCAN keyword WHERE keyword BETWEEN based - on - comic AND violence AND keyword IN(based - on - comic,fight,marvel - comics,second - part,sequel,superhero,tv - special,violence)
 4523930   4523930     TABLE SCAN movie_keyword
    1711       155    TABLE SCAN title WHERE production_year >= 2015
36244344  36244344   TABLE SCAN cast_info
    2821         1  TABLE SCAN name WHERE name LIKE '%Downey%Robert%'
Native storage
Estimate    Actual  Operator
       -         1  PROJECT a1 AS movie_keyword, a2 AS actor_name, a3 AS hero_movie
       -         1  AGGREGATE MIN(keyword) AS a1, MIN(name) AS a2, MIN(title) AS a3
       -        18  PROJECT keyword, name, title
       -        18  PROJECT keyword, name, title
       -        18  INNER JOIN HASH ON PROJECTION_5191.id = PROJECTION_5170.keyword_id
       -        18  │└PROJECT keyword_id, name, title
       -        18   PROJECT keyword_id, name, title
       -        18   INNER JOIN HASH ON tuple(PROJECTION_5188.movie_id,PROJECTION_5188.movie_id) = tuple(PROJECTION_5173.movie_id,PROJECTION_5173.id)
       -         3   │└PROJECT movie_id AS movie_id_right, id, name, title
       -         3    PROJECT movie_id, name, title, id
       -         3    INNER JOIN HASH ON PROJECTION_5185.id = PROJECTION_5176.movie_id
       -       486    │└PROJECT movie_id, name
       -       486     PROJECT movie_id, name
       -       486     INNER JOIN HASH ON PROJECTION_5182.person_id = PROJECTION_5179.id
       -         2     │└PROJECT id, name
       -         2      PROJECT id, name
       -         2      TABLE SCAN name WHERE name LIKE '%Downey%Robert%'
       -  36244344     PROJECT person_id, movie_id
       -  36244344     PROJECT movie_id, person_id
       -  36244344     TABLE SCAN cast_info
       -       438    PROJECT id, title
       -       438    PROJECT id, title
       -       438    TABLE SCAN title WHERE production_year > 2014
       -   4523930   PROJECT movie_id AS movie_id_left, keyword_id
       -   4523930   PROJECT movie_id, keyword_id
       -   4523930   TABLE SCAN movie_keyword
       -    134170  PROJECT id, keyword
       -    134170  PROJECT id, keyword
       -    134170  TABLE SCAN keyword WHERE TRUE
Native storage
Estimate    Actual  Operator
       -         1  AGGREGATE MIN(#0), MIN(#1), MIN(#2)
  642135        12  PROJECT keyword, name, title
  642135        12  INNER JOIN HASH ON person_id = id
  833498         2  │└FILTER id <= 4061926
  833498         2   TABLE SCAN "name" WHERE name LIKE '%Downey%Robert%'
 2768855        12  INNER JOIN HASH ON movie_id = id
  189748        36  │└INNER JOIN HASH ON keyword_id = id
   26834         8   │└FILTER IN ...
  134170    134170    INNER JOIN HASH ON keyword = #0
       0         8    │└SCAN MATERIALISED
  134170    134170    TABLE SCAN keyword WHERE keyword IN('superhero','sequel','second-part','marvel-comics','based-on-comic','tv-special','fight','violence')
  920995       642   INNER JOIN HASH ON movie_id = id
  505662       438   │└FILTER id BETWEEN 2 AND 2525971
  505662       438    TABLE SCAN title WHERE production_year > 2014
 4523930      9557   TABLE SCAN movie_keyword
36244344         2  TABLE SCAN cast_info WHERE movie_id >= 2 AND movie_id <= 2525971
Apache Iceberg
Estimate    Actual  Operator
       1         1  PROJECT movie_keyword, actor_name, hero_movie
       1         1  AGGREGATE MIN(keyword), MIN(name), MIN(title)
   95230        10  DISTRIBUTE GATHER
   95230        10  AGGREGATE MIN(keyword), MIN(name), MIN(title)
   95230        12  PROJECT keyword, name, title
   95230        12  INNER JOIN HASH ON id = movie_id AND id = movie_id
   90297       438  │└DISTRIBUTE GATHER
   90297       438   FILTER production_year > 2014
 2528312   1420329   TABLE SCAN title WHERE production_year > 2014
 2663974       112  PROJECT movie_id, movie_id, keyword, name
 2663974       112  INNER JOIN HASH ON id = person_id
  833499         2  │└DISTRIBUTE HASH ON id
  833499         2   FILTER name LIKE '%Downey%Robert%'
 4167491   4167491   TABLE SCAN name WHERE name LIKE '%Downey%Robert%'
12982462   1564305  DISTRIBUTE HASH ON person_id
12982462   1564305  PROJECT person_id, movie_id, movie_id, keyword
12982462   1564305  INNER JOIN HASH ON id = keyword_id
   26834         8  │└DISTRIBUTE GATHER
   26834         8   FILTER keyword IN('superhero','sequel','second-part','marvel-comics','based-on-comic','tv-special','fight','violence')
  134170    134170   DISTRIBUTE ROUND ROBIN
  134170    134170   TABLE SCAN keyword WHERE keyword IN('superhero','sequel','second-part','marvel-comics','based-on-comic','tv-special','fight','violence')
64912311      215M  PROJECT person_id, movie_id, movie_id, keyword_id
64912311      215M  INNER JOIN HASH ON movie_id = movie_id
 4523930   4523930  │└DISTRIBUTE HASH ON movie_id
 4523930   4523930   TABLE SCAN movie_keyword WHERE (((keyword_id >= 393) AND (keyword_id <= 8201)) AND keyword_id IN(8201,393,2905,1732,875,1038,398,1578)) AND ((((movie_id >= 203875) AND (movie_id <= 2520697)) AND ((movie_id >= 203875) AND (movie_id <= 2520697))) AND TRUE)
36244344  36244344  DISTRIBUTE HASH ON movie_id
36244344  36244344  TABLE SCAN cast_info WHERE CASE MOD(HASH_REPARTITION movie_id,10) WHEN 0 THEN (((movie_id >= 86) AND (movie_id <= 2525771)) AND TRUE) WHEN 1 THEN (((movie_id >= 64) AND (movie_id <= 2525732)) AND TRUE) WHEN 2 THEN (((movie_id >= 24) AND (movie_id <= 2525642)) AND TRUE) WHEN 3 THEN (((movie_id >= 2) AND (movie_id <= 2525707)) AND TRUE) WHEN 4 THEN (((movie_id >= 228) AND (movie_id <= 2525736)) AND TRUE) WHEN 5 THEN (((movie_id >= 302) AND (movie_id <= 2525715)) AND TRUE) WH...
Native storage
Estimate    Actual  Operator
36200000         0  SEQUENCE
       1         1  ├─AGGREGATE MIN(k.keyword), MIN(n.name), MIN(t.title)
       1         1   DISTRIBUTE GATHER
       1         1   AGGREGATE MIN(k.keyword), MIN(n.name), MIN(t.title)
     317        12   INNER JOIN HASH ON mk.keyword_id = k.id
     317         8   │└DISTRIBUTE GATHER
36200000         8    TABLE SCAN keyword WHERE k.keyword IN('superhero','sequel','second-part','marvel-comics','based-on-comic','tv-special','fight','violence')
 4520000        12   INNER JOIN HASH ON ci.movie_id = mk.movie_id
 4520000         3   │└DISTRIBUTE GATHER
 1500000         3    INNER JOIN HASH ON ci.movie_id = t.id
 1500000       438    │└DISTRIBUTE GATHER
 4520000       438     TABLE SCAN title WHERE (t.production_year IS NOT NULL) AND (t.production_year > 2014L)
25700000         3    INNER JOIN HASH ON ci.person_id = n.id
25700000         2    │└DISTRIBUTE HASH ON n.id
  134000         2     TABLE SCAN name WHERE n.name LIKE '%Downey%Robert%'
 2920000    124345    FILTER 
       -   8119699    TABLE SCAN cast_info
 2530000    849824   TABLE SCAN movie_keyword
36200000         0  └─FILTER 
 4520000         1    DISTRIBUTE HASH
 4520000         1    AGGREGATE bloom_filter_agg(bloom_expr(t.id,t.id),438L,4096L)
 4520000       438    SELECT
 4170000         8    DISTRIBUTE HASH
 4170000         8    DISTRIBUTE HASH
 4170000         8    TABLE SCAN keyword WHERE k.keyword IN('superhero','sequel','second-part','marvel-comics','based-on-comic','tv-special','fight','violence')
Native storage
Estimate    Actual  Operator
       1         1  AGGREGATE MIN(keyword as keyword) AS Expr1010, MIN(name as name) AS Expr1011, MIN(title as title) AS Expr1012
       1        12  FILTER name as name LIKE '%Downey%Robert%'
     150       383  INNER JOIN LOOP ON Bmk1006 = Bmk1006
       1       383  │└TABLE SEEK name AS n
     150       383  SORT Expr1036
     150       383  PROJECT BmkToPage Bmk1006 AS Expr1036
     150       383  INNER JOIN LOOP ON ci.person_id = n.id
       1       383  │└TABLE SEEK name AS n
     150       383  SORT person_id
     150       383  INNER JOIN LOOP ON Bmk1000 = Bmk1000
       1       383  │└TABLE SEEK cast_info AS ci
     150       383  SORT Expr1035
     150       383  PROJECT BmkToPage Bmk1000 AS Expr1035
     150       383  INNER JOIN LOOP ON t.id = ci.movie_id
      30       383  │└TABLE SEEK cast_info AS ci
       4        36  INNER JOIN LOOP ON Bmk1008 = Bmk1008
       0        36  │└TABLE SEEK title AS t WHERE production_year as production_year > 2014
     725     35548  PROJECT BmkToPage Bmk1008 AS Expr1042
     725     35548  INNER JOIN LOOP ON mk.movie_id = t.id
       1     35548  │└TABLE SEEK title AS t
     725     35548  INNER JOIN LOOP ON Bmk1004 = Bmk1004
       1     35548  │└TABLE SEEK movie_keyword AS mk
     725     35548  INNER JOIN LOOP ON k.id = mk.keyword_id
      90     35548  │└TABLE SEEK movie_keyword AS mk
       8         8  TABLE SCAN keyword AS k WHERE keyword as keyword = 'based-on-comic' OR keyword as keyword = 'fight' OR keyword as keyword = 'marvel-comics' OR keyword as keyword = 'second-part' OR keyword as keyword = 'sequel' OR keyword as keyword = 'superhero' OR keyword as keyword = 'tv-special' OR keyword as keyword = 'violence'
Apache Iceberg
Estimate    Actual  Operator
       1         ∞  PROJECT min AS movie_keyword, min_21 AS actor_name, min_22 AS hero_movie
       1         1  AGGREGATE MIN(min_23) AS min, MIN(min_24) AS min_21, MIN(min_25) AS min_22
       -        16  DISTRIBUTE GATHER
       -        16  AGGREGATE MIN(keyword) AS min_23, MIN(name) AS min_24, MIN(title) AS min_25
       -        12  INNER JOIN HASH ON movie_id = id_13
   88353       438  │└DISTRIBUTE HASH ON id_13
   88353       438   PROJECT id AS id_13, title
   88353       438   FILTER production_year > 2014
   88353       438   TABLE SCAN title
       -        12  INNER JOIN HASH ON person_id = id_9
 4167491         2  │└DISTRIBUTE HASH ON id_9
 4167491         2   PROJECT id AS id_9, name
 4167491         2   FILTER name LIKE '%Downey%Robert%'
 4167491         2   TABLE SCAN name
       -        12  INNER JOIN HASH ON keyword_id = id_0
  134170         8  │└DISTRIBUTE GATHER
  134170         8   PROJECT id AS id_0, keyword
  134170         8   FILTER keyword IN('based-on-comic','fight','marvel-comics','second-part','sequel','superhero','tv-special','violence')
  134170         8   TABLE SCAN keyword
       -        12  INNER JOIN HASH ON movie_id = movie_id_5
 4523930        36  │└DISTRIBUTE HASH ON movie_id_5
 4523930        36   PROJECT movie_id AS movie_id_5, keyword_id
 4523930        36   TABLE SCAN movie_keyword
36244344         2  TABLE SCAN cast_info
Native storage
Estimate    Actual  Operator
       1         1  AGGREGATE MIN(keyword), MIN(name), MIN(title)
       1        12  INNER JOIN LOOP ON id = person_id
       1       383  │└INNER JOIN LOOP ON movie_id = movie_id AND movie_id = id AND (movie_id = id)
       1        36   │└INNER JOIN HASH ON movie_id = id
      91       438    │└TABLE SEEK title AS t
     270     35548    INNER JOIN LOOP ON keyword_id = id
       8         8    │└TABLE SEEK keyword AS k
    2440     35548    TABLE SEEK movie_keyword AS mk
    1404       383   TABLE SEEK cast_info AS ci
     383       383  TABLE SEEK name AS n WHERE n.name LIKE '%Downey%Robert%'