| -- SORT_QUERY_RESULTS |
| |
| set hive.support.concurrency=true; |
| set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; |
| set hive.strict.checks.cartesian.product=false; |
| set hive.stats.fetch.column.stats=true; |
| set hive.materializedview.rewriting=true; |
| |
| create table emps_n2 ( |
| empid int, |
| deptno int, |
| name varchar(256), |
| salary float, |
| commission int) |
| stored as orc TBLPROPERTIES ('transactional'='true'); |
| insert into emps_n2 values (100, 10, 'Bill', 10000, 1000), (200, 20, 'Eric', 8000, 500), |
| (150, 10, 'Sebastian', 7000, null), (110, 10, 'Theodore', 10000, 250), (120, 10, 'Bill', 10000, 250); |
| |
| create table depts_n1 ( |
| deptno int, |
| name varchar(256), |
| locationid int) |
| stored as orc TBLPROPERTIES ('transactional'='true'); |
| insert into depts_n1 values (10, 'Sales', 10), (30, 'Marketing', null), (20, 'HR', 20); |
| |
| create table dependents_n1 ( |
| empid int, |
| name varchar(256)) |
| stored as orc TBLPROPERTIES ('transactional'='true'); |
| insert into dependents_n1 values (10, 'Michael'), (20, 'Jane'); |
| |
| create table locations_n1 ( |
| locationid int, |
| name varchar(256)) |
| stored as orc TBLPROPERTIES ('transactional'='true'); |
| insert into locations_n1 values (10, 'San Francisco'), (20, 'San Diego'); |
| |
| alter table emps_n2 add constraint pk1 primary key (empid) disable novalidate rely; |
| alter table depts_n1 add constraint pk2 primary key (deptno) disable novalidate rely; |
| alter table dependents_n1 add constraint pk3 primary key (empid) disable novalidate rely; |
| alter table locations_n1 add constraint pk4 primary key (locationid) disable novalidate rely; |
| |
| alter table emps_n2 add constraint fk1 foreign key (deptno) references depts_n1(deptno) disable novalidate rely; |
| alter table depts_n1 add constraint fk2 foreign key (locationid) references locations_n1(locationid) disable novalidate rely; |
| |
| alter table emps_n2 change column deptno deptno int constraint nn1 not null disable novalidate rely; |
| alter table depts_n1 change column locationid locationid int constraint nn2 not null disable novalidate rely; |
| |
| |
| -- EXAMPLE 8 |
| create materialized view mv1_n1 as |
| select name, deptno, salary from emps_n2 where deptno > 15 group by name, deptno, salary; |
| |
| explain |
| select name from emps_n2 where deptno >= 20 group by name; |
| |
| select name from emps_n2 where deptno >= 20 group by name; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 12 |
| create materialized view mv1_n1 as |
| select name, deptno, salary, count(*) as c, sum(empid) as s |
| from emps_n2 where deptno >= 15 group by name, deptno, salary; |
| |
| explain |
| select name, sum(empid) as s |
| from emps_n2 where deptno > 15 group by name; |
| |
| select name, sum(empid) as s |
| from emps_n2 where deptno > 15 group by name; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 22 |
| create materialized view mv1_n1 as |
| select depts_n1.deptno, dependents_n1.empid |
| from depts_n1 |
| join dependents_n1 on (depts_n1.name = dependents_n1.name) |
| join locations_n1 on (locations_n1.name = dependents_n1.name) |
| join emps_n2 on (emps_n2.deptno = depts_n1.deptno) |
| where depts_n1.deptno > 10 and depts_n1.deptno < 20 |
| group by depts_n1.deptno, dependents_n1.empid; |
| |
| explain |
| select dependents_n1.empid |
| from depts_n1 |
| join dependents_n1 on (depts_n1.name = dependents_n1.name) |
| join locations_n1 on (locations_n1.name = dependents_n1.name) |
| join emps_n2 on (emps_n2.deptno = depts_n1.deptno) |
| where depts_n1.deptno > 11 and depts_n1.deptno < 19 |
| group by dependents_n1.empid; |
| |
| select dependents_n1.empid |
| from depts_n1 |
| join dependents_n1 on (depts_n1.name = dependents_n1.name) |
| join locations_n1 on (locations_n1.name = dependents_n1.name) |
| join emps_n2 on (emps_n2.deptno = depts_n1.deptno) |
| where depts_n1.deptno > 11 and depts_n1.deptno < 19 |
| group by dependents_n1.empid; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 24 |
| create materialized view mv1_n1 as |
| select empid, depts_n1.deptno, count(*) as c, sum(empid) as s |
| from emps_n2 join depts_n1 using (deptno) |
| group by empid, depts_n1.deptno; |
| |
| explain |
| select deptno from emps_n2 group by deptno; |
| |
| select deptno from emps_n2 group by deptno; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 26 |
| create materialized view mv1_n1 as |
| select empid, depts_n1.deptno, count(*) as c, sum(empid) as s |
| from emps_n2 join depts_n1 using (deptno) |
| group by empid, depts_n1.deptno; |
| |
| explain |
| select deptno, empid, sum(empid) as s, count(*) as c |
| from emps_n2 group by empid, deptno; |
| |
| select deptno, empid, sum(empid) as s, count(*) as c |
| from emps_n2 group by empid, deptno; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 30 |
| create materialized view mv1_n1 as |
| select dependents_n1.empid, emps_n2.deptno, sum(salary) as s |
| from emps_n2 |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| group by dependents_n1.empid, emps_n2.deptno; |
| |
| explain |
| select dependents_n1.empid, sum(salary) as s |
| from emps_n2 |
| join depts_n1 on (emps_n2.deptno = depts_n1.deptno) |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| group by dependents_n1.empid; |
| |
| select dependents_n1.empid, sum(salary) as s |
| from emps_n2 |
| join depts_n1 on (emps_n2.deptno = depts_n1.deptno) |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| group by dependents_n1.empid; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 31 |
| create materialized view mv1_n1 as |
| select dependents_n1.empid, emps_n2.deptno, sum(salary) as s |
| from emps_n2 |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| group by dependents_n1.empid, emps_n2.deptno; |
| |
| explain |
| select depts_n1.name, sum(salary) as s |
| from emps_n2 |
| join depts_n1 on (emps_n2.deptno = depts_n1.deptno) |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| group by depts_n1.name; |
| |
| select depts_n1.name, sum(salary) as s |
| from emps_n2 |
| join depts_n1 on (emps_n2.deptno = depts_n1.deptno) |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| group by depts_n1.name; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 41 |
| create materialized view mv1_n1 as |
| select a.empid deptno from |
| (select * from emps_n2 where empid = 1) a |
| join depts_n1 on (a.deptno = depts_n1.deptno) |
| join dependents_n1 on (a.empid = dependents_n1.empid); |
| |
| explain |
| select a.empid from |
| (select * from emps_n2 where empid = 1) a |
| join dependents_n1 on (a.empid = dependents_n1.empid); |
| |
| select a.empid from |
| (select * from emps_n2 where empid = 1) a |
| join dependents_n1 on (a.empid = dependents_n1.empid); |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 42 |
| create materialized view mv1_n1 as |
| select a.empid, a.deptno from |
| (select * from emps_n2 where empid = 1) a |
| join depts_n1 on (a.deptno = depts_n1.deptno) |
| join dependents_n1 on (a.empid = dependents_n1.empid); |
| |
| explain |
| select a.empid from |
| (select * from emps_n2 where empid = 1) a |
| join dependents_n1 on (a.empid = dependents_n1.empid); |
| |
| select a.empid from |
| (select * from emps_n2 where empid = 1) a |
| join dependents_n1 on (a.empid = dependents_n1.empid); |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 43 |
| create materialized view mv1_n1 as |
| select empid deptno from |
| (select * from emps_n2 where empid = 1) a |
| join depts_n1 on (a.deptno = depts_n1.deptno); |
| |
| explain |
| select empid from emps_n2 where empid = 1; |
| |
| select empid from emps_n2 where empid = 1; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 44 |
| create materialized view mv1_n1 as |
| select emps_n2.empid, emps_n2.deptno from emps_n2 |
| join depts_n1 on (emps_n2.deptno = depts_n1.deptno) |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| where emps_n2.empid = 1; |
| |
| explain |
| select emps_n2.empid from emps_n2 |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| where emps_n2.empid = 1; |
| |
| select emps_n2.empid from emps_n2 |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| where emps_n2.empid = 1; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 45a |
| create materialized view mv1_n1 as |
| select emps_n2.empid, emps_n2.deptno from emps_n2 |
| join depts_n1 a on (emps_n2.deptno=a.deptno) |
| join depts_n1 b on (emps_n2.deptno=b.deptno) |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| where emps_n2.empid = 1; |
| |
| explain |
| select emps_n2.empid from emps_n2 |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| where emps_n2.empid = 1; |
| |
| select emps_n2.empid from emps_n2 |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| where emps_n2.empid = 1; |
| |
| drop materialized view mv1_n1; |
| |
| -- EXAMPLE 45b |
| create materialized view mv1_n1 as |
| select emps_n2.empid, emps_n2.deptno from emps_n2 |
| join depts_n1 a on (emps_n2.deptno=a.deptno) |
| join depts_n1 b on (emps_n2.deptno=b.deptno) |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| where emps_n2.name = 'Sebastian'; |
| |
| explain |
| select emps_n2.empid from emps_n2 |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| where emps_n2.name = 'Sebastian'; |
| |
| select emps_n2.empid from emps_n2 |
| join dependents_n1 on (emps_n2.empid = dependents_n1.empid) |
| where emps_n2.name = 'Sebastian'; |
| |
| drop materialized view mv1_n1; |