summaryrefslogtreecommitdiff
path: root/mysql-test/t/stat_tables.test
blob: 640f9febc757405ec736ce0397e29596c68d83cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
--source include/have_stat_tables.inc

set @save_use_stat_tables=@@use_stat_tables;

set use_stat_tables='preferably';

--disable_warnings
DROP DATABASE IF EXISTS dbt3_s001;
--enable_warnings

CREATE DATABASE dbt3_s001;

use dbt3_s001;

set @save_optimizer_switch=@@optimizer_switch;
set optimizer_switch='extended_keys=off';
 
--disable_query_log
--disable_result_log
--disable_warnings
--source include/dbt3_s001.inc
create index i_p_retailprice on part(p_retailprice);
delete from mysql.table_stat;
delete from mysql.column_stat;
delete from mysql.index_stat;
ANALYZE TABLE
customer, lineitem, nation, orders, part, partsupp, region, supplier;
FLUSH TABLE mysql.table_stat, mysql.index_stat;
--enable_warnings
--enable_result_log
--enable_query_log

select * from mysql.table_stat;
select * from mysql.index_stat;

set optimizer_switch=@save_optimizer_switch; 

set @save_optimizer_switch=@@optimizer_switch;
set optimizer_switch='index_condition_pushdown=off';

let $Q5=
select n_name, sum(l_extendedprice * (1 - l_discount)) as revenue
from customer, orders, lineitem, supplier, nation, region
where c_custkey = o_custkey and l_orderkey = o_orderkey
      and l_suppkey = s_suppkey and c_nationkey = s_nationkey
      and s_nationkey = n_nationkey and n_regionkey = r_regionkey
      and r_name = 'AMERICA' and o_orderdate >= date '1995-01-01'
      and o_orderdate < date '1995-01-01' + interval '1' year
group by n_name
order by revenue desc;

eval EXPLAIN $Q5;
eval $Q5;

set optimizer_switch=@save_optimizer_switch;

delete from mysql.index_stat;

--disable_query_log
--disable_result_log
--disable_warnings
ANALYZE TABLE
customer, lineitem, nation, orders, part, partsupp, region, supplier;
FLUSH TABLE mysql.table_stat, mysql.index_stat;
--enable_warnings
--enable_result_log
--enable_query_log

select * from mysql.table_stat;
select * from mysql.index_stat;

select * from mysql.table_stat where table_name='orders';
select * from mysql.index_stat where table_name='orders';
select (select cardinality from mysql.table_stat where table_name='orders') /
       (select avg_frequency from mysql.index_stat 
          where index_name='i_o_orderdate' and prefix_arity=1) as n_distinct; 
select count(distinct o_orderdate) from orders;
select (select cardinality from mysql.table_stat where table_name='orders') /
       (select avg_frequency from mysql.index_stat 
          where index_name='i_o_custkey' and prefix_arity=1) as n_distinct;
select count(distinct o_custkey) from orders; 
show index from orders;
select index_name, column_name, cardinality from information_schema.statistics
  where table_name='orders';

set @save_optimizer_switch=@@optimizer_switch;
set optimizer_switch='index_condition_pushdown=off';

eval EXPLAIN $Q5;
eval $Q5;

set optimizer_switch=@save_optimizer_switch;

let $Q8=
select o_year,
       sum(case when nation = 'UNITED STATES' then volume else 0 end) /
       sum(volume) as mkt_share
from (select extract(year from o_orderdate) as o_year,
             l_extendedprice * (1-l_discount) as volume, 
             n2.n_name as nation
      from part, supplier, lineitem, orders, customer, 
           nation n1, nation n2, region
      where p_partkey = l_partkey and s_suppkey = l_suppkey
            and l_orderkey = o_orderkey and o_custkey = c_custkey
            and c_nationkey = n1.n_nationkey and n1.n_regionkey = r_regionkey
            and r_name = 'AMERICA' and s_nationkey = n2.n_nationkey
            and o_orderdate between date '1995-01-01' and date '1996-12-31'
            and p_type = 'STANDARD BRUSHED STEEL' ) as all_nations
group by o_year
order by o_year;

eval EXPLAIN $Q8;
eval $Q8;


let $Q9=
select nation, o_year, sum(amount) as sum_profit
from (select n_name as nation, 
      extract(year from o_orderdate) as o_year,
      l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount
      from part, supplier, lineitem, partsupp, orders, nation
      where s_suppkey = l_suppkey and ps_suppkey = l_suppkey
            and ps_partkey = l_partkey and p_partkey = l_partkey
            and o_orderkey = l_orderkey and s_nationkey = n_nationkey
            and p_name like '%green%') as profit
group by nation, o_year
order by nation, o_year desc;

eval EXPLAIN $Q9;
eval $Q9;


set @save_optimizer_switch=@@optimizer_switch;
set optimizer_switch='extended_keys=on';

let $QQ1=
select o_orderkey, p_partkey
  from part, lineitem, orders
  where p_retailprice > 1100 and o_orderdate='1997-01-01' 
        and o_orderkey=l_orderkey and p_partkey=l_partkey;

eval EXPLAIN $QQ1;
eval $QQ1;

set optimizer_switch=@save_optimizer_switch;


DROP DATABASE dbt3_s001;

use test;

set use_stat_tables=@save_use_stat_tables;