4394 lines
205 KiB
Plaintext
4394 lines
205 KiB
Plaintext
drop table if exists t1;
|
|
create table t1 (
|
|
a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(248) default ' '
|
|
) charset latin1 collate latin1_bin;
|
|
insert into t1 (a1, a2, b, c, d) values
|
|
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
|
|
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
|
|
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
|
|
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
|
|
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
|
|
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
|
|
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
|
|
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
|
|
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
|
|
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
|
|
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
|
|
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'),
|
|
('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'),
|
|
('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'),
|
|
('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'),
|
|
('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4'),
|
|
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
|
|
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
|
|
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
|
|
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
|
|
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
|
|
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
|
|
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
|
|
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
|
|
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
|
|
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
|
|
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
|
|
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'),
|
|
('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'),
|
|
('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'),
|
|
('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'),
|
|
('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4');
|
|
create index idx_t1_0 on t1 (a1);
|
|
create index idx_t1_1 on t1 (a1,a2,b,c);
|
|
create index idx_t1_2 on t1 (a1,a2,b);
|
|
drop table if exists t2;
|
|
create table t2 (
|
|
a1 char(64), a2 char(64) not null, b char(16), c char(16), d char(16), dummy char(248) default ' '
|
|
) charset latin1 collate latin1_bin;
|
|
insert into t2 select * from t1;
|
|
insert into t2 (a1, a2, b, c, d) values
|
|
('a','a',NULL,'a777','xyz'),('a','a',NULL,'a888','xyz'),('a','a',NULL,'a999','xyz'),
|
|
('a','a','a',NULL,'xyz'),
|
|
('a','a','b',NULL,'xyz'),
|
|
('a','b','a',NULL,'xyz'),
|
|
('c','a',NULL,'c777','xyz'),('c','a',NULL,'c888','xyz'),('c','a',NULL,'c999','xyz'),
|
|
('d','b','b',NULL,'xyz'),
|
|
('e','a','a',NULL,'xyz'),('e','a','a',NULL,'xyz'),('e','a','a',NULL,'xyz'),('e','a','a',NULL,'xyz'),
|
|
('e','a','b',NULL,'xyz'),('e','a','b',NULL,'xyz'),('e','a','b',NULL,'xyz'),('e','a','b',NULL,'xyz'),
|
|
('a','a',NULL,'a777','xyz'),('a','a',NULL,'a888','xyz'),('a','a',NULL,'a999','xyz'),
|
|
('a','a','a',NULL,'xyz'),
|
|
('a','a','b',NULL,'xyz'),
|
|
('a','b','a',NULL,'xyz'),
|
|
('c','a',NULL,'c777','xyz'),('c','a',NULL,'c888','xyz'),('c','a',NULL,'c999','xyz'),
|
|
('d','b','b',NULL,'xyz'),
|
|
('e','a','a',NULL,'xyz'),('e','a','a',NULL,'xyz'),('e','a','a',NULL,'xyz'),('e','a','a',NULL,'xyz'),
|
|
('e','a','b',NULL,'xyz'),('e','a','b',NULL,'xyz'),('e','a','b',NULL,'xyz'),('e','a','b',NULL,'xyz');
|
|
create index idx_t2_0 on t2 (a1);
|
|
create index idx_t2_1 on t2 (a1,a2,b,c);
|
|
create index idx_t2_2 on t2 (a1,a2,b);
|
|
drop table if exists t3;
|
|
create table t3 (
|
|
a1 char(1), a2 char(1), b char(1), c char(4) not null, d char(3), dummy char(1) default ' '
|
|
) charset latin1 collate latin1_bin;
|
|
insert into t3 (a1, a2, b, c, d) values
|
|
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
|
|
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
|
|
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
|
|
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
|
|
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
|
|
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
|
|
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
|
|
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
|
|
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
|
|
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
|
|
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
|
|
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4');
|
|
insert into t3 (a1, a2, b, c, d) values
|
|
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
|
|
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
|
|
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
|
|
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
|
|
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
|
|
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
|
|
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
|
|
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
|
|
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
|
|
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
|
|
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
|
|
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4');
|
|
insert into t3 (a1, a2, b, c, d) values
|
|
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
|
|
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
|
|
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
|
|
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
|
|
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
|
|
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
|
|
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
|
|
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
|
|
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
|
|
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
|
|
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
|
|
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4');
|
|
insert into t3 (a1, a2, b, c, d) values
|
|
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
|
|
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
|
|
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
|
|
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
|
|
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
|
|
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
|
|
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
|
|
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
|
|
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
|
|
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
|
|
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
|
|
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4');
|
|
create index idx_t3_0 on t3 (a1);
|
|
create index idx_t3_1 on t3 (a1,a2,b,c);
|
|
create index idx_t3_2 on t3 (a1,a2,b);
|
|
analyze table t1, t2, t3;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
test.t2 analyze status OK
|
|
test.t3 analyze status OK
|
|
explain select a1, min(a2) from t1 group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL # # Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,min(`test`.`t1`.`a2`) AS `min(a2)` from `test`.`t1` group by `test`.`t1`.`a1`
|
|
explain format=tree select a1, min(a2) from t1 group by a1;
|
|
EXPLAIN
|
|
-> Group aggregate (computed in earlier step): min(t1.a2)
|
|
-> Index range scan on t1 using index_for_group_by(idx_t1_1) (cost=5.85 rows=17)
|
|
|
|
explain select a1, max(a2) from t1 group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 65 NULL # # Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,max(`test`.`t1`.`a2`) AS `max(a2)` from `test`.`t1` group by `test`.`t1`.`a1`
|
|
explain select a1, min(a2), max(a2) from t1 group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL # # Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,min(`test`.`t1`.`a2`) AS `min(a2)`,max(`test`.`t1`.`a2`) AS `max(a2)` from `test`.`t1` group by `test`.`t1`.`a1`
|
|
explain select a1, a2, b, min(c), max(c) from t1 group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL # # Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,max(c),min(c) from t1 group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL # # Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)`,min(`test`.`t1`.`c`) AS `min(c)` from `test`.`t1` group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,max(c),min(c) from t2 group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # # Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select min(a2), a1, max(a2), min(a2), a1 from t1 group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL # # Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select min(`test`.`t1`.`a2`) AS `min(a2)`,`test`.`t1`.`a1` AS `a1`,max(`test`.`t1`.`a2`) AS `max(a2)`,min(`test`.`t1`.`a2`) AS `min(a2)`,`test`.`t1`.`a1` AS `a1` from `test`.`t1` group by `test`.`t1`.`a1`
|
|
explain select a1, b, min(c), a1, max(c), b, a2, max(c), max(c) from t1 group by a1, a2, b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL # # Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,`test`.`t1`.`a1` AS `a1`,max(`test`.`t1`.`c`) AS `max(c)`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`a2` AS `a2`,max(`test`.`t1`.`c`) AS `max(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select min(a2) from t1 group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL # # Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select min(`test`.`t1`.`a2`) AS `min(a2)` from `test`.`t1` group by `test`.`t1`.`a1`
|
|
explain select a2, min(c), max(c) from t1 group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL # # Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a2` AS `a2`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
select a1, min(a2) from t1 group by a1;
|
|
a1 min(a2)
|
|
a a
|
|
b a
|
|
c a
|
|
d a
|
|
select a1, max(a2) from t1 group by a1;
|
|
a1 max(a2)
|
|
a b
|
|
b b
|
|
c b
|
|
d b
|
|
select a1, min(a2), max(a2) from t1 group by a1;
|
|
a1 min(a2) max(a2)
|
|
a a b
|
|
b a b
|
|
c a b
|
|
d a b
|
|
select a1, a2, b, min(c), max(c) from t1 group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a a111 d111
|
|
a a b e112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b,max(c),min(c) from t1 group by a1,a2,b;
|
|
a1 a2 b max(c) min(c)
|
|
a a a d111 a111
|
|
a a b h112 e112
|
|
a b a l121 i121
|
|
a b b p122 m122
|
|
b a a d211 a211
|
|
b a b h212 e212
|
|
b b a l221 i221
|
|
b b b p222 m222
|
|
c a a d311 a311
|
|
c a b h312 e312
|
|
c b a l321 i321
|
|
c b b p322 m322
|
|
d a a d411 a411
|
|
d a b h412 e412
|
|
d b a l421 i421
|
|
d b b p422 m422
|
|
select a1,a2,b,max(c),min(c) from t2 group by a1,a2,b;
|
|
a1 a2 b max(c) min(c)
|
|
a a NULL a999 a777
|
|
a a a d111 a111
|
|
a a b h112 e112
|
|
a b a l121 i121
|
|
a b b p122 m122
|
|
b a a d211 a211
|
|
b a b h212 e212
|
|
b b a l221 i221
|
|
b b b p222 m222
|
|
c a NULL c999 c777
|
|
c a a d311 a311
|
|
c a b h312 e312
|
|
c b a l321 i321
|
|
c b b p322 m322
|
|
d a a d411 a411
|
|
d a b h412 e412
|
|
d b a l421 i421
|
|
d b b p422 m422
|
|
e a a NULL NULL
|
|
e a b NULL NULL
|
|
select min(a2), a1, max(a2), min(a2), a1 from t1 group by a1;
|
|
min(a2) a1 max(a2) min(a2) a1
|
|
a a b a a
|
|
a b b a b
|
|
a c b a c
|
|
a d b a d
|
|
select a1, b, min(c), a1, max(c), b, a2, max(c), max(c) from t1 group by a1, a2, b;
|
|
a1 b min(c) a1 max(c) b a2 max(c) max(c)
|
|
a a a111 a d111 a a d111 d111
|
|
a b e112 a h112 b a h112 h112
|
|
a a i121 a l121 a b l121 l121
|
|
a b m122 a p122 b b p122 p122
|
|
b a a211 b d211 a a d211 d211
|
|
b b e212 b h212 b a h212 h212
|
|
b a i221 b l221 a b l221 l221
|
|
b b m222 b p222 b b p222 p222
|
|
c a a311 c d311 a a d311 d311
|
|
c b e312 c h312 b a h312 h312
|
|
c a i321 c l321 a b l321 l321
|
|
c b m322 c p322 b b p322 p322
|
|
d a a411 d d411 a a d411 d411
|
|
d b e412 d h412 b a h412 h412
|
|
d a i421 d l421 a b l421 l421
|
|
d b m422 d p422 b b p422 p422
|
|
select min(a2) from t1 group by a1;
|
|
min(a2)
|
|
a
|
|
a
|
|
a
|
|
a
|
|
select a2, min(c), max(c) from t1 group by a1,a2,b;
|
|
a2 min(c) max(c)
|
|
a a111 d111
|
|
a e112 h112
|
|
b i121 l121
|
|
b m122 p122
|
|
a a211 d211
|
|
a e212 h212
|
|
b i221 l221
|
|
b m222 p222
|
|
a a311 d311
|
|
a e312 h312
|
|
b i321 l321
|
|
b m322 p322
|
|
a a411 d411
|
|
a e412 h412
|
|
b i421 l421
|
|
b m422 p422
|
|
explain select a1,a2,b,min(c),max(c) from t1 where a1 < 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 65 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`a1` < 'd') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where a1 >= 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 100.00 Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`a1` >= 'b') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t1 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 2 # Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`a1` >= 'c') or (`test`.`t1`.`a1` < 'b')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1, max(c) from t1 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 2 # Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`a1` >= 'c') or (`test`.`t1`.`a1` < 'b')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where a1 >= 'c' or a2 < 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`a1` >= 'c') or (`test`.`t1`.`a2` < 'b')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t1 where a1 = 'z' or a1 = 'b' or a1 = 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 3 # Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`a1` = 'z') or (`test`.`t1`.`a1` = 'b') or (`test`.`t1`.`a1` = 'd')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where a1 = 'z' or a1 = 'b' or a1 = 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 3 # Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`a1` = 'z') or (`test`.`t1`.`a1` = 'b') or (`test`.`t1`.`a1` = 'd')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t1 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 130 NULL 4 # Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (((`test`.`t1`.`a1` = 'b') or (`test`.`t1`.`a1` = 'd') or (`test`.`t1`.`a1` = 'a') or (`test`.`t1`.`a1` = 'c')) and (`test`.`t1`.`a2` > 'a')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 130 NULL 4 # Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (((`test`.`t1`.`a1` = 'b') or (`test`.`t1`.`a1` = 'd') or (`test`.`t1`.`a1` = 'a') or (`test`.`t1`.`a1` = 'c')) and (`test`.`t1`.`a2` > 'a')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,min(c),max(c) from t1 where a1 >= 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 100.00 Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`a1` >= 'b') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1, max(c) from t1 where a1 in ('a','b','d') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 3 100.00 Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`a1` in ('a','b','d')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where a1 < 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 65 NULL # 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`a1` < 'd') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where a1 < 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 65 NULL # 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`a1` < 'd') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where a1 >= 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 100.00 Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`a1` >= 'b') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 100.00 Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`a1` >= 'c') or (`test`.`t2`.`a1` < 'b')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1, max(c) from t2 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 100.00 Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`a1` >= 'c') or (`test`.`t2`.`a1` < 'b')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where a1 >= 'c' or a2 < 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 55.55 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`a1` >= 'c') or (`test`.`t2`.`a2` < 'b')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where a1 = 'z' or a1 = 'b' or a1 = 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 65 NULL # 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`a1` = 'z') or (`test`.`t2`.`a1` = 'b') or (`test`.`t2`.`a1` = 'd')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where a1 = 'z' or a1 = 'b' or a1 = 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 65 NULL # 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`a1` = 'z') or (`test`.`t2`.`a1` = 'b') or (`test`.`t2`.`a1` = 'd')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 129 NULL # 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (((`test`.`t2`.`a1` = 'b') or (`test`.`t2`.`a1` = 'd') or (`test`.`t2`.`a1` = 'a') or (`test`.`t2`.`a1` = 'c')) and (`test`.`t2`.`a2` > 'a')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 129 NULL # 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (((`test`.`t2`.`a1` = 'b') or (`test`.`t2`.`a1` = 'd') or (`test`.`t2`.`a1` = 'a') or (`test`.`t2`.`a1` = 'c')) and (`test`.`t2`.`a2` > 'a')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,min(c),max(c) from t2 where a1 >= 'b' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 100.00 Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`a1` >= 'b') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1, max(c) from t2 where a1 in ('a','b','d') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 65 NULL # 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`a1` in ('a','b','d')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
select a1,a2,b,min(c),max(c) from t1 where a1 < 'd' group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a a111 d111
|
|
a a b e112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
select a1,a2,b,min(c),max(c) from t1 where a1 >= 'b' group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t1 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a a d111
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
c a a d311
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1, max(c) from t1 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
|
a1 max(c)
|
|
a d111
|
|
a h112
|
|
a l121
|
|
a p122
|
|
c d311
|
|
c h312
|
|
c l321
|
|
c p322
|
|
d d411
|
|
d h412
|
|
d l421
|
|
d p422
|
|
select a1,a2,b,min(c),max(c) from t1 where a1 >= 'c' or a2 < 'b' group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a a111 d111
|
|
a a b e112 h112
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t1 where a1 = 'z' or a1 = 'b' or a1 = 'd' group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
b a a d211
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t1 where a1 = 'z' or a1 = 'b' or a1 = 'd' group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t1 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a b a l121
|
|
a b b p122
|
|
b b a l221
|
|
b b b p222
|
|
c b a l321
|
|
c b b p322
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t1 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,min(c),max(c) from t1 where a1 >= 'b' group by a1,a2,b;
|
|
a1 min(c) max(c)
|
|
b a211 d211
|
|
b e212 h212
|
|
b i221 l221
|
|
b m222 p222
|
|
c a311 d311
|
|
c e312 h312
|
|
c i321 l321
|
|
c m322 p322
|
|
d a411 d411
|
|
d e412 h412
|
|
d i421 l421
|
|
d m422 p422
|
|
select a1, max(c) from t1 where a1 in ('a','b','d') group by a1,a2,b;
|
|
a1 max(c)
|
|
a d111
|
|
a h112
|
|
a l121
|
|
a p122
|
|
b d211
|
|
b h212
|
|
b l221
|
|
b p222
|
|
d d411
|
|
d h412
|
|
d l421
|
|
d p422
|
|
select a1,a2,b, max(c) from t2 where a1 < 'd' group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a NULL a999
|
|
a a a d111
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
b a a d211
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
c a NULL c999
|
|
c a a d311
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
select a1,a2,b,min(c),max(c) from t2 where a1 < 'd' group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a NULL a777 a999
|
|
a a a a111 d111
|
|
a a b e112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a NULL c777 c999
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
select a1,a2,b,min(c),max(c) from t2 where a1 >= 'b' group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a NULL c777 c999
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
e a a NULL NULL
|
|
e a b NULL NULL
|
|
select a1,a2,b, max(c) from t2 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a NULL a999
|
|
a a a d111
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
c a NULL c999
|
|
c a a d311
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
e a a NULL
|
|
e a b NULL
|
|
select a1, max(c) from t2 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
|
a1 max(c)
|
|
a a999
|
|
a d111
|
|
a h112
|
|
a l121
|
|
a p122
|
|
c c999
|
|
c d311
|
|
c h312
|
|
c l321
|
|
c p322
|
|
d d411
|
|
d h412
|
|
d l421
|
|
d p422
|
|
e NULL
|
|
e NULL
|
|
select a1,a2,b,min(c),max(c) from t2 where a1 >= 'c' or a2 < 'b' group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a NULL a777 a999
|
|
a a a a111 d111
|
|
a a b e112 h112
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
c a NULL c777 c999
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
e a a NULL NULL
|
|
e a b NULL NULL
|
|
select a1,a2,b, max(c) from t2 where a1 = 'z' or a1 = 'b' or a1 = 'd' group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
b a a d211
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t2 where a1 = 'z' or a1 = 'b' or a1 = 'd' group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t2 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a b a l121
|
|
a b b p122
|
|
b b a l221
|
|
b b b p222
|
|
c b a l321
|
|
c b b p322
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t2 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,min(c),max(c) from t2 where a1 >= 'b' group by a1,a2,b;
|
|
a1 min(c) max(c)
|
|
b a211 d211
|
|
b e212 h212
|
|
b i221 l221
|
|
b m222 p222
|
|
c c777 c999
|
|
c a311 d311
|
|
c e312 h312
|
|
c i321 l321
|
|
c m322 p322
|
|
d a411 d411
|
|
d e412 h412
|
|
d i421 l421
|
|
d m422 p422
|
|
e NULL NULL
|
|
e NULL NULL
|
|
select a1, max(c) from t2 where a1 in ('a','b','d') group by a1,a2,b;
|
|
a1 max(c)
|
|
a a999
|
|
a d111
|
|
a h112
|
|
a l121
|
|
a p122
|
|
b d211
|
|
b h212
|
|
b l221
|
|
b p222
|
|
d d411
|
|
d h412
|
|
d l421
|
|
d p422
|
|
explain select a1,a2,b,max(c),min(c) from t1 where (a2 = 'a') and (b = 'b') group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 17 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)`,min(`test`.`t1`.`c`) AS `min(c)` from `test`.`t1` where ((`test`.`t1`.`b` = 'b') and (`test`.`t1`.`a2` = 'a')) group by `test`.`t1`.`a1`
|
|
explain select a1,max(c),min(c) from t1 where (a2 = 'a') and (b = 'b') group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 17 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,max(`test`.`t1`.`c`) AS `max(c)`,min(`test`.`t1`.`c`) AS `min(c)` from `test`.`t1` where ((`test`.`t1`.`b` = 'b') and (`test`.`t1`.`a2` = 'a')) group by `test`.`t1`.`a1`
|
|
explain select a1,a2,b, max(c) from t1 where (b = 'b') group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 33 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`b` = 'b') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (b = 'b') group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 33 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`b` = 'b') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2, max(c) from t1 where (b = 'b') group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 33 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`b` = 'b') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b,max(c),min(c) from t2 where (a2 = 'a') and (b = 'b') group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 21 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` where ((`test`.`t2`.`b` = 'b') and (`test`.`t2`.`a2` = 'a')) group by `test`.`t2`.`a1`
|
|
explain select a1,max(c),min(c) from t2 where (a2 = 'a') and (b = 'b') group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 21 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,max(`test`.`t2`.`c`) AS `max(c)`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` where ((`test`.`t2`.`b` = 'b') and (`test`.`t2`.`a2` = 'a')) group by `test`.`t2`.`a1`
|
|
explain select a1,a2,b, max(c) from t2 where (b = 'b') group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_1,idx_t2_2 idx_t2_1 146 NULL 42 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`b` = 'b') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (b = 'b') group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 42 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`b` = 'b') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2, max(c) from t2 where (b = 'b') group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_1,idx_t2_2 idx_t2_1 146 NULL 42 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`b` = 'b') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b,max(c),min(c) from t3 where (a2 = 'a') and (b = 'b') group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t3 NULL range idx_t3_0,idx_t3_1,idx_t3_2 idx_t3_1 6 NULL 13 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t3`.`a1` AS `a1`,`test`.`t3`.`a2` AS `a2`,`test`.`t3`.`b` AS `b`,max(`test`.`t3`.`c`) AS `max(c)`,min(`test`.`t3`.`c`) AS `min(c)` from `test`.`t3` where ((`test`.`t3`.`b` = 'b') and (`test`.`t3`.`a2` = 'a')) group by `test`.`t3`.`a1`
|
|
explain select a1,max(c),min(c) from t3 where (a2 = 'a') and (b = 'b') group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t3 NULL range idx_t3_0,idx_t3_1,idx_t3_2 idx_t3_1 6 NULL 13 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t3`.`a1` AS `a1`,max(`test`.`t3`.`c`) AS `max(c)`,min(`test`.`t3`.`c`) AS `min(c)` from `test`.`t3` where ((`test`.`t3`.`b` = 'b') and (`test`.`t3`.`a2` = 'a')) group by `test`.`t3`.`a1`
|
|
select a1,a2,b,max(c),min(c) from t1 where (a2 = 'a') and (b = 'b') group by a1;
|
|
a1 a2 b max(c) min(c)
|
|
a a b h112 e112
|
|
b a b h212 e212
|
|
c a b h312 e312
|
|
d a b h412 e412
|
|
select a1,max(c),min(c) from t1 where (a2 = 'a') and (b = 'b') group by a1;
|
|
a1 max(c) min(c)
|
|
a h112 e112
|
|
b h212 e212
|
|
c h312 e312
|
|
d h412 e412
|
|
select a1,a2,b, max(c) from t1 where (b = 'b') group by a1,a2;
|
|
a1 a2 b max(c)
|
|
a a b h112
|
|
a b b p122
|
|
b a b h212
|
|
b b b p222
|
|
c a b h312
|
|
c b b p322
|
|
d a b h412
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t1 where (b = 'b') group by a1,a2;
|
|
a1 a2 b min(c) max(c)
|
|
a a b e112 h112
|
|
a b b m122 p122
|
|
b a b e212 h212
|
|
b b b m222 p222
|
|
c a b e312 h312
|
|
c b b m322 p322
|
|
d a b e412 h412
|
|
d b b m422 p422
|
|
select a1,a2, max(c) from t1 where (b = 'b') group by a1,a2;
|
|
a1 a2 max(c)
|
|
a a h112
|
|
a b p122
|
|
b a h212
|
|
b b p222
|
|
c a h312
|
|
c b p322
|
|
d a h412
|
|
d b p422
|
|
select a1,a2,b,max(c),min(c) from t2 where (a2 = 'a') and (b = 'b') group by a1;
|
|
a1 a2 b max(c) min(c)
|
|
a a b h112 e112
|
|
b a b h212 e212
|
|
c a b h312 e312
|
|
d a b h412 e412
|
|
e a b NULL NULL
|
|
select a1,max(c),min(c) from t2 where (a2 = 'a') and (b = 'b') group by a1;
|
|
a1 max(c) min(c)
|
|
a h112 e112
|
|
b h212 e212
|
|
c h312 e312
|
|
d h412 e412
|
|
e NULL NULL
|
|
select a1,a2,b, max(c) from t2 where (b = 'b') group by a1,a2;
|
|
a1 a2 b max(c)
|
|
a a b h112
|
|
a b b p122
|
|
b a b h212
|
|
b b b p222
|
|
c a b h312
|
|
c b b p322
|
|
d a b h412
|
|
d b b p422
|
|
e a b NULL
|
|
select a1,a2,b,min(c),max(c) from t2 where (b = 'b') group by a1,a2;
|
|
a1 a2 b min(c) max(c)
|
|
a a b e112 h112
|
|
a b b m122 p122
|
|
b a b e212 h212
|
|
b b b m222 p222
|
|
c a b e312 h312
|
|
c b b m322 p322
|
|
d a b e412 h412
|
|
d b b m422 p422
|
|
e a b NULL NULL
|
|
select a1,a2, max(c) from t2 where (b = 'b') group by a1,a2;
|
|
a1 a2 max(c)
|
|
a a h112
|
|
a b p122
|
|
b a h212
|
|
b b p222
|
|
c a h312
|
|
c b p322
|
|
d a h412
|
|
d b p422
|
|
e a NULL
|
|
select a1,a2,b,max(c),min(c) from t3 where (a2 = 'a') and (b = 'b') group by a1;
|
|
a1 a2 b max(c) min(c)
|
|
a a b h112 e112
|
|
b a b h212 e212
|
|
c a b h312 e312
|
|
select a1,max(c),min(c) from t3 where (a2 = 'a') and (b = 'b') group by a1;
|
|
a1 max(c) min(c)
|
|
a h112 e112
|
|
b h212 e212
|
|
c h312 e312
|
|
explain select a1,a2,b,min(c) from t2 where (a2 = 'a') and b is NULL group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 21 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` where ((`test`.`t2`.`a2` = 'a') and (`test`.`t2`.`b` is null)) group by `test`.`t2`.`a1`
|
|
explain select a1,a2,b,max(c) from t2 where (a2 = 'a') and b is NULL group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 146 NULL 21 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`a2` = 'a') and (`test`.`t2`.`b` is null)) group by `test`.`t2`.`a1`
|
|
explain select a1,a2,b,min(c) from t2 where b is NULL group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 42 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` where (`test`.`t2`.`b` is null) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b,max(c) from t2 where b is NULL group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_1,idx_t2_2 idx_t2_1 146 NULL 42 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`b` is null) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where b is NULL group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 42 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`b` is null) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where b is NULL group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 42 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`b` is null) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
select a1,a2,b,min(c) from t2 where (a2 = 'a') and b is NULL group by a1;
|
|
a1 a2 b min(c)
|
|
a a NULL a777
|
|
c a NULL c777
|
|
select a1,a2,b,max(c) from t2 where (a2 = 'a') and b is NULL group by a1;
|
|
a1 a2 b max(c)
|
|
a a NULL a999
|
|
c a NULL c999
|
|
select a1,a2,b,min(c) from t2 where b is NULL group by a1,a2;
|
|
a1 a2 b min(c)
|
|
a a NULL a777
|
|
c a NULL c777
|
|
select a1,a2,b,max(c) from t2 where b is NULL group by a1,a2;
|
|
a1 a2 b max(c)
|
|
a a NULL a999
|
|
c a NULL c999
|
|
select a1,a2,b,min(c),max(c) from t2 where b is NULL group by a1,a2;
|
|
a1 a2 b min(c) max(c)
|
|
a a NULL a777 a999
|
|
c a NULL c777 c999
|
|
select a1,a2,b,min(c),max(c) from t2 where b is NULL group by a1,a2;
|
|
a1 a2 b min(c) max(c)
|
|
a a NULL a777 a999
|
|
c a NULL c777 c999
|
|
explain select a1,a2,b, max(c) from t1 where (c > 'b1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL # 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`c` > 'b1') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (c > 'b1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`c` > 'b1') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t1 where (c > 'f123') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`c` > 'f123') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (c > 'f123') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`c` > 'f123') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t1 where (c < 'a0') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`c` < 'a0') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (c < 'a0') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`c` < 'a0') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t1 where (c < 'k321') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`c` < 'k321') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (c < 'k321') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`c` < 'k321') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t1 where (c < 'a0') or (c > 'b1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 55.55 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`c` < 'a0') or (`test`.`t1`.`c` > 'b1')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (c < 'a0') or (c > 'b1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 55.55 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`c` < 'a0') or (`test`.`t1`.`c` > 'b1')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t1 where (c > 'b1') or (c <= 'g1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 55.55 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`c` > 'b1') or (`test`.`t1`.`c` <= 'g1')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (c > 'b1') or (c <= 'g1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 55.55 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`c` > 'b1') or (`test`.`t1`.`c` <= 'g1')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (c > 'b111') and (c <= 'g112') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 11.11 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`c` > 'b111') and (`test`.`t1`.`c` <= 'g112')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (c < 'c5') or (c = 'g412') or (c = 'k421') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 46.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`c` < 'c5') or (`test`.`t1`.`c` = 'g412') or (`test`.`t1`.`c` = 'k421')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where ((c > 'b111') and (c <= 'g112')) or ((c > 'd000') and (c <= 'i110')) group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 20.98 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (((`test`.`t1`.`c` > 'b111') and (`test`.`t1`.`c` <= 'g112')) or ((`test`.`t1`.`c` > 'd000') and (`test`.`t1`.`c` <= 'i110'))) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (c between 'b111' and 'g112') or (c between 'd000' and 'i110') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 20.99 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`c` between 'b111' and 'g112') or (`test`.`t1`.`c` between 'd000' and 'i110')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where (c > 'b1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`c` > 'b1') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (c > 'b1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`c` > 'b1') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where (c > 'f123') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`c` > 'f123') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (c > 'f123') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`c` > 'f123') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where (c < 'a0') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`c` < 'a0') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (c < 'a0') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`c` < 'a0') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where (c < 'k321') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`c` < 'k321') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (c < 'k321') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (`test`.`t2`.`c` < 'k321') group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where (c < 'a0') or (c > 'b1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 55.55 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`c` < 'a0') or (`test`.`t2`.`c` > 'b1')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (c < 'a0') or (c > 'b1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 55.55 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`c` < 'a0') or (`test`.`t2`.`c` > 'b1')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b, max(c) from t2 where (c > 'b1') or (c <= 'g1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 55.55 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`c` > 'b1') or (`test`.`t2`.`c` <= 'g1')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (c > 'b1') or (c <= 'g1') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 55.55 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`c` > 'b1') or (`test`.`t2`.`c` <= 'g1')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (c > 'b111') and (c <= 'g112') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 11.11 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`c` > 'b111') and (`test`.`t2`.`c` <= 'g112')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (c < 'c5') or (c = 'g412') or (c = 'k421') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 46.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`c` < 'c5') or (`test`.`t2`.`c` = 'g412') or (`test`.`t2`.`c` = 'k421')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where ((c > 'b111') and (c <= 'g112')) or ((c > 'd000') and (c <= 'i110')) group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 20.98 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (((`test`.`t2`.`c` > 'b111') and (`test`.`t2`.`c` <= 'g112')) or ((`test`.`t2`.`c` > 'd000') and (`test`.`t2`.`c` <= 'i110'))) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
select a1,a2,b, max(c) from t1 where (c > 'b1') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a a d111
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
b a a d211
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
c a a d311
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t1 where (c > 'b1') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a b111 d111
|
|
a a b e112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a a b211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a a b311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a b411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t1 where (c > 'f123') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t1 where (c > 'f123') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a b g112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a b f212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a b f312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a b f412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t1 where (c < 'a0') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
select a1,a2,b,min(c),max(c) from t1 where (c < 'a0') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
select a1,a2,b, max(c) from t1 where (c < 'k321') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a a d111
|
|
a a b h112
|
|
a b a k121
|
|
b a a d211
|
|
b a b h212
|
|
b b a k221
|
|
c a a d311
|
|
c a b h312
|
|
c b a j321
|
|
d a a d411
|
|
d a b h412
|
|
d b a j421
|
|
select a1,a2,b,min(c),max(c) from t1 where (c < 'k321') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a a111 d111
|
|
a a b e112 h112
|
|
a b a i121 k121
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 k221
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 j321
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 j421
|
|
select a1,a2,b, max(c) from t1 where (c < 'a0') or (c > 'b1') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a a d111
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
b a a d211
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
c a a d311
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t1 where (c < 'a0') or (c > 'b1') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a b111 d111
|
|
a a b e112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a a b211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a a b311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a b411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t1 where (c > 'b1') or (c <= 'g1') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a a d111
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
b a a d211
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
c a a d311
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t1 where (c > 'b1') or (c <= 'g1') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a a111 d111
|
|
a a b e112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b,min(c),max(c) from t1 where (c > 'b111') and (c <= 'g112') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a c111 d111
|
|
a a b e112 g112
|
|
b a a b211 d211
|
|
b a b e212 f212
|
|
c a a b311 d311
|
|
c a b e312 f312
|
|
d a a b411 d411
|
|
d a b e412 f412
|
|
select a1,a2,b,min(c),max(c) from t1 where (c < 'c5') or (c = 'g412') or (c = 'k421') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a a111 c111
|
|
b a a a211 c211
|
|
c a a a311 c311
|
|
d a a a411 c411
|
|
d a b g412 g412
|
|
d b a k421 k421
|
|
select a1,a2,b,min(c),max(c) from t1 where ((c > 'b111') and (c <= 'g112')) or ((c > 'd000') and (c <= 'i110')) group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a c111 d111
|
|
a a b e112 h112
|
|
b a a b211 d211
|
|
b a b e212 h212
|
|
c a a b311 d311
|
|
c a b e312 h312
|
|
d a a b411 d411
|
|
d a b e412 h412
|
|
select a1,a2,b,min(c),max(c) from t1 where (c between 'b111' and 'g112') or (c between 'd000' and 'i110') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a b111 d111
|
|
a a b e112 h112
|
|
b a a b211 d211
|
|
b a b e212 h212
|
|
c a a b311 d311
|
|
c a b e312 h312
|
|
d a a b411 d411
|
|
d a b e412 h412
|
|
select a1,a2,b, max(c) from t2 where (c > 'b1') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a a d111
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
b a a d211
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
c a NULL c999
|
|
c a a d311
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t2 where (c > 'b1') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a b111 d111
|
|
a a b e112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a a b211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a NULL c777 c999
|
|
c a a b311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a b411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t2 where (c > 'f123') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t2 where (c > 'f123') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a b g112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a b f212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a b f312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a b f412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t2 where (c < 'a0') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
select a1,a2,b,min(c),max(c) from t2 where (c < 'a0') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
select a1,a2,b, max(c) from t2 where (c < 'k321') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a NULL a999
|
|
a a a d111
|
|
a a b h112
|
|
a b a k121
|
|
b a a d211
|
|
b a b h212
|
|
b b a k221
|
|
c a NULL c999
|
|
c a a d311
|
|
c a b h312
|
|
c b a j321
|
|
d a a d411
|
|
d a b h412
|
|
d b a j421
|
|
select a1,a2,b,min(c),max(c) from t2 where (c < 'k321') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a NULL a777 a999
|
|
a a a a111 d111
|
|
a a b e112 h112
|
|
a b a i121 k121
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 k221
|
|
c a NULL c777 c999
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 j321
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 j421
|
|
select a1,a2,b, max(c) from t2 where (c < 'a0') or (c > 'b1') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a a d111
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
b a a d211
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
c a NULL c999
|
|
c a a d311
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t2 where (c < 'a0') or (c > 'b1') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a b111 d111
|
|
a a b e112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a a b211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a NULL c777 c999
|
|
c a a b311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a b411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b, max(c) from t2 where (c > 'b1') or (c <= 'g1') group by a1,a2,b;
|
|
a1 a2 b max(c)
|
|
a a NULL a999
|
|
a a a d111
|
|
a a b h112
|
|
a b a l121
|
|
a b b p122
|
|
b a a d211
|
|
b a b h212
|
|
b b a l221
|
|
b b b p222
|
|
c a NULL c999
|
|
c a a d311
|
|
c a b h312
|
|
c b a l321
|
|
c b b p322
|
|
d a a d411
|
|
d a b h412
|
|
d b a l421
|
|
d b b p422
|
|
select a1,a2,b,min(c),max(c) from t2 where (c > 'b1') or (c <= 'g1') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a NULL a777 a999
|
|
a a a a111 d111
|
|
a a b e112 h112
|
|
a b a i121 l121
|
|
a b b m122 p122
|
|
b a a a211 d211
|
|
b a b e212 h212
|
|
b b a i221 l221
|
|
b b b m222 p222
|
|
c a NULL c777 c999
|
|
c a a a311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a a411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b,min(c),max(c) from t2 where (c > 'b111') and (c <= 'g112') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a c111 d111
|
|
a a b e112 g112
|
|
b a a b211 d211
|
|
b a b e212 f212
|
|
c a NULL c777 c999
|
|
c a a b311 d311
|
|
c a b e312 f312
|
|
d a a b411 d411
|
|
d a b e412 f412
|
|
select a1,a2,b,min(c),max(c) from t2 where (c < 'c5') or (c = 'g412') or (c = 'k421') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a NULL a777 a999
|
|
a a a a111 c111
|
|
b a a a211 c211
|
|
c a a a311 c311
|
|
d a a a411 c411
|
|
d a b g412 g412
|
|
d b a k421 k421
|
|
select a1,a2,b,min(c),max(c) from t2 where ((c > 'b111') and (c <= 'g112')) or ((c > 'd000') and (c <= 'i110')) group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a c111 d111
|
|
a a b e112 h112
|
|
b a a b211 d211
|
|
b a b e212 h212
|
|
c a NULL c777 c999
|
|
c a a b311 d311
|
|
c a b e312 h312
|
|
d a a b411 d411
|
|
d a b e412 h412
|
|
explain select a1,a2,b,min(c),max(c) from t1
|
|
where exists ( select * from t2 where t2.c = t1.c )
|
|
group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 100.00 Using where; Using index
|
|
1 SIMPLE <subquery2> NULL eq_ref <auto_distinct_key> <auto_distinct_key> 17 test.t1.c 1 100.00 NULL
|
|
2 MATERIALIZED t2 NULL index NULL idx_t2_1 163 NULL 164 100.00 Using index
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.c' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` semi join (`test`.`t2`) where (`<subquery2>`.`c` = `test`.`t1`.`c`) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1
|
|
where exists ( select * from t2 where t2.c > 'b1' )
|
|
group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index NULL idx_t2_1 163 NULL 164 33.33 Using where; Using index; Using temporary; FirstMatch
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 100.00 Using index; Using join buffer (Block Nested Loop)
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` semi join (`test`.`t2`) where (`test`.`t2`.`c` > 'b1') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 18.52 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (((`test`.`t1`.`a1` >= 'c') or (`test`.`t1`.`a2` < 'b')) and (`test`.`t1`.`b` > 'a')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (a1 >= 'c' or a2 < 'b') and (c > 'b111') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 18.52 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (((`test`.`t1`.`a1` >= 'c') or (`test`.`t1`.`a2` < 'b')) and (`test`.`t1`.`c` > 'b111')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t1 where (a2 >= 'b') and (b = 'a') and (c > 'b111') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 1.11 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b') and (`test`.`t1`.`c` > 'b111')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b,min(c) from t1 where ((a1 > 'a') or (a1 < '9')) and ((a2 >= 'b') and (a2 < 'z')) and (b = 'a') and ((c < 'h112') or (c = 'j121') or (c > 'k121' and c < 'm122') or (c > 'o122')) group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 2 2.50 Using index condition; Using where
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and ((`test`.`t1`.`a1` > 'a') or (`test`.`t1`.`a1` < '9')) and (`test`.`t1`.`a2` >= 'b') and (`test`.`t1`.`a2` < 'z') and ((`test`.`t1`.`c` < 'h112') or (`test`.`t1`.`c` = 'j121') or ((`test`.`t1`.`c` > 'k121') and (`test`.`t1`.`c` < 'm122')) or (`test`.`t1`.`c` > 'o122'))) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b,min(c) from t1 where ((a1 > 'a') or (a1 < '9')) and ((a2 >= 'b') and (a2 < 'z')) and (b = 'a') and ((c = 'j121') or (c > 'k121' and c < 'm122') or (c > 'o122') or (c < 'h112') or (c = 'c111')) group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 2 2.50 Using index condition; Using where
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and ((`test`.`t1`.`a1` > 'a') or (`test`.`t1`.`a1` < '9')) and (`test`.`t1`.`a2` >= 'b') and (`test`.`t1`.`a2` < 'z') and ((`test`.`t1`.`c` = 'j121') or ((`test`.`t1`.`c` > 'k121') and (`test`.`t1`.`c` < 'm122')) or (`test`.`t1`.`c` > 'o122') or (`test`.`t1`.`c` < 'h112') or (`test`.`t1`.`c` = 'c111'))) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b,min(c) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 5.00 Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)` from `test`.`t1` where ((`test`.`t1`.`b` = 'c') and (`test`.`t1`.`a1` > 'a') and (`test`.`t1`.`a2` > 'a')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b,min(c) from t1 where (ord(a1) > 97) and (ord(a2) + ord(a1) > 194) and (b = 'c') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 10.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)` from `test`.`t1` where ((`test`.`t1`.`b` = 'c') and (ord(`test`.`t1`.`a1`) > 97) and ((ord(`test`.`t1`.`a2`) + ord(`test`.`t1`.`a1`)) > 194)) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 18.52 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (((`test`.`t2`.`a1` >= 'c') or (`test`.`t2`.`a2` < 'b')) and (`test`.`t2`.`b` > 'a')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (a1 >= 'c' or a2 < 'b') and (c > 'b111') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 18.52 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where (((`test`.`t2`.`a1` >= 'c') or (`test`.`t2`.`a2` < 'b')) and (`test`.`t2`.`c` > 'b111')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b,min(c),max(c) from t2 where (a2 >= 'b') and (b = 'a') and (c > 'b111') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 1.11 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`b` = 'a') and (`test`.`t2`.`a2` >= 'b') and (`test`.`t2`.`c` > 'b111')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b,min(c) from t2 where ((a1 > 'a') or (a1 < '9')) and ((a2 >= 'b') and (a2 < 'z')) and (b = 'a') and ((c < 'h112') or (c = 'j121') or (c > 'k121' and c < 'm122') or (c > 'o122')) group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 2.50 Using index condition; Using where
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` where ((`test`.`t2`.`b` = 'a') and ((`test`.`t2`.`a1` > 'a') or (`test`.`t2`.`a1` < '9')) and (`test`.`t2`.`a2` >= 'b') and (`test`.`t2`.`a2` < 'z') and ((`test`.`t2`.`c` < 'h112') or (`test`.`t2`.`c` = 'j121') or ((`test`.`t2`.`c` > 'k121') and (`test`.`t2`.`c` < 'm122')) or (`test`.`t2`.`c` > 'o122'))) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b,min(c) from t2 where ((a1 > 'a') or (a1 < '9')) and ((a2 >= 'b') and (a2 < 'z')) and (b = 'a') and ((c = 'j121') or (c > 'k121' and c < 'm122') or (c > 'o122') or (c < 'h112') or (c = 'c111')) group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 2.50 Using index condition; Using where
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` where ((`test`.`t2`.`b` = 'a') and ((`test`.`t2`.`a1` > 'a') or (`test`.`t2`.`a1` < '9')) and (`test`.`t2`.`a2` >= 'b') and (`test`.`t2`.`a2` < 'z') and ((`test`.`t2`.`c` = 'j121') or ((`test`.`t2`.`c` > 'k121') and (`test`.`t2`.`c` < 'm122')) or (`test`.`t2`.`c` > 'o122') or (`test`.`t2`.`c` < 'h112') or (`test`.`t2`.`c` = 'c111'))) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b,min(c) from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 5.00 Using index condition
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` where ((`test`.`t2`.`b` = 'c') and (`test`.`t2`.`a1` > 'a') and (`test`.`t2`.`a2` > 'a')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
select a1,a2,b,min(c),max(c) from t1 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a b e112 h112
|
|
b a b e212 h212
|
|
c a b e312 h312
|
|
c b b m322 p322
|
|
d a b e412 h412
|
|
d b b m422 p422
|
|
select a1,a2,b,min(c),max(c) from t1 where (a1 >= 'c' or a2 < 'b') and (c > 'b111') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a c111 d111
|
|
a a b e112 h112
|
|
b a a b211 d211
|
|
b a b e212 h212
|
|
c a a b311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a b411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b,min(c),max(c) from t1 where (a2 >= 'b') and (b = 'a') and (c > 'b111') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a b a i121 l121
|
|
b b a i221 l221
|
|
c b a i321 l321
|
|
d b a i421 l421
|
|
select a1,a2,b,min(c) from t1 where ((a1 > 'a') or (a1 < '9')) and ((a2 >= 'b') and (a2 < 'z')) and (b = 'a') and ((c < 'h112') or (c = 'j121') or (c > 'k121' and c < 'm122') or (c > 'o122')) group by a1,a2,b;
|
|
a1 a2 b min(c)
|
|
b b a k221
|
|
c b a k321
|
|
d b a k421
|
|
select a1,a2,b,min(c) from t1 where ((a1 > 'a') or (a1 < '9')) and ((a2 >= 'b') and (a2 < 'z')) and (b = 'a') and ((c = 'j121') or (c > 'k121' and c < 'm122') or (c > 'o122') or (c < 'h112') or (c = 'c111')) group by a1,a2,b;
|
|
a1 a2 b min(c)
|
|
b b a k221
|
|
c b a k321
|
|
d b a k421
|
|
select a1,a2,b,min(c) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
a1 a2 b min(c)
|
|
select a1,a2,b,min(c) from t1 where (ord(a1) > 97) and (ord(a2) + ord(a1) > 194) and (b = 'c') group by a1,a2,b;
|
|
a1 a2 b min(c)
|
|
select a1,a2,b,min(c),max(c) from t2 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a b e112 h112
|
|
b a b e212 h212
|
|
c a b e312 h312
|
|
c b b m322 p322
|
|
d a b e412 h412
|
|
d b b m422 p422
|
|
e a b NULL NULL
|
|
select a1,a2,b,min(c),max(c) from t2 where (a1 >= 'c' or a2 < 'b') and (c > 'b111') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a a a c111 d111
|
|
a a b e112 h112
|
|
b a a b211 d211
|
|
b a b e212 h212
|
|
c a NULL c777 c999
|
|
c a a b311 d311
|
|
c a b e312 h312
|
|
c b a i321 l321
|
|
c b b m322 p322
|
|
d a a b411 d411
|
|
d a b e412 h412
|
|
d b a i421 l421
|
|
d b b m422 p422
|
|
select a1,a2,b,min(c),max(c) from t2 where (a2 >= 'b') and (b = 'a') and (c > 'b111') group by a1,a2,b;
|
|
a1 a2 b min(c) max(c)
|
|
a b a i121 l121
|
|
b b a i221 l221
|
|
c b a i321 l321
|
|
d b a i421 l421
|
|
select a1,a2,b,min(c) from t2 where ((a1 > 'a') or (a1 < '9')) and ((a2 >= 'b') and (a2 < 'z')) and (b = 'a') and ((c < 'h112') or (c = 'j121') or (c > 'k121' and c < 'm122') or (c > 'o122')) group by a1,a2,b;
|
|
a1 a2 b min(c)
|
|
b b a k221
|
|
c b a k321
|
|
d b a k421
|
|
select a1,a2,b,min(c) from t2 where ((a1 > 'a') or (a1 < '9')) and ((a2 >= 'b') and (a2 < 'z')) and (b = 'a') and ((c = 'j121') or (c > 'k121' and c < 'm122') or (c > 'o122') or (c < 'h112') or (c = 'c111')) group by a1,a2,b;
|
|
a1 a2 b min(c)
|
|
b b a k221
|
|
c b a k321
|
|
d b a k421
|
|
select a1,a2,b,min(c) from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
a1 a2 b min(c)
|
|
explain select a1,a2,b from t1 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 18.52 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (((`test`.`t1`.`a1` >= 'c') or (`test`.`t1`.`a2` < 'b')) and (`test`.`t1`.`b` > 'a')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain format=tree select a1,a2,b from t1 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
|
EXPLAIN
|
|
-> Group (no aggregates)
|
|
-> Filter: (((t1.a1 >= 'c') or (t1.a2 < 'b')) and (t1.b > 'a')) (cost=16.90 rows=24)
|
|
-> Index scan on t1 using idx_t1_2 (cost=16.90 rows=128)
|
|
|
|
explain select a1,a2,b from t1 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 3.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 0.78 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where ((`test`.`t1`.`c` = 'i121') and (`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 5.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`b` = 'c') and (`test`.`t1`.`a1` > 'a') and (`test`.`t1`.`a2` > 'a')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b from t2 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 146 NULL # 18.52 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (((`test`.`t2`.`a1` >= 'c') or (`test`.`t2`.`a2` < 'b')) and (`test`.`t2`.`b` > 'a')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1,a2,b from t2 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_2 146 NULL # 3.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` = 'a') and (`test`.`t2`.`a2` >= 'b')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 0.61 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where ((`test`.`t2`.`c` = 'i121') and (`test`.`t2`.`b` = 'a') and (`test`.`t2`.`a2` >= 'b')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 5.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` = 'c') and (`test`.`t2`.`a1` > 'a') and (`test`.`t2`.`a2` > 'a')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
select a1,a2,b from t1 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
|
a1 a2 b
|
|
a a b
|
|
b a b
|
|
c a b
|
|
c b b
|
|
d a b
|
|
d b b
|
|
select a1,a2,b from t1 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
a1 a2 b
|
|
a b a
|
|
b b a
|
|
c b a
|
|
d b a
|
|
select a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121') group by a1,a2,b;
|
|
a1 a2 b c
|
|
a b a i121
|
|
select a1,a2,b from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
a1 a2 b
|
|
select a1,a2,b from t2 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
|
a1 a2 b
|
|
a a b
|
|
b a b
|
|
c a b
|
|
c b b
|
|
d a b
|
|
d b b
|
|
e a b
|
|
select a1,a2,b from t2 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
a1 a2 b
|
|
a b a
|
|
b b a
|
|
c b a
|
|
d b a
|
|
select a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121') group by a1,a2,b;
|
|
a1 a2 b c
|
|
a b a i121
|
|
select a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
a1 a2 b
|
|
explain select distinct a1,a2,b from t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1`
|
|
explain select distinct a1,a2,b from t1 where (a2 >= 'b') and (b = 'a');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 3.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b'))
|
|
explain select distinct a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1 idx_t1_1 163 NULL 128 0.78 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where ((`test`.`t1`.`c` = 'i121') and (`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b'))
|
|
explain select distinct a1,a2,b from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 5.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`b` = 'c') and (`test`.`t1`.`a1` > 'a') and (`test`.`t1`.`a2` > 'a'))
|
|
explain select distinct b from t1 where (a2 >= 'b') and (b = 'a');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 3.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b'))
|
|
explain select distinct a1,a2,b from t2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_2 146 NULL # 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b` from `test`.`t2`
|
|
explain select distinct a1,a2,b from t2 where (a2 >= 'b') and (b = 'a');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_2 146 NULL # 3.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` = 'a') and (`test`.`t2`.`a2` >= 'b'))
|
|
explain select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1 idx_t2_1 163 NULL 164 0.61 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where ((`test`.`t2`.`c` = 'i121') and (`test`.`t2`.`b` = 'a') and (`test`.`t2`.`a2` >= 'b'))
|
|
explain select distinct a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 5.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` = 'c') and (`test`.`t2`.`a1` > 'a') and (`test`.`t2`.`a2` > 'a'))
|
|
explain select distinct b from t2 where (a2 >= 'b') and (b = 'a');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_2 146 NULL 164 3.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` = 'a') and (`test`.`t2`.`a2` >= 'b'))
|
|
select distinct a1,a2,b from t1;
|
|
a1 a2 b
|
|
a a a
|
|
a a b
|
|
a b a
|
|
a b b
|
|
b a a
|
|
b a b
|
|
b b a
|
|
b b b
|
|
c a a
|
|
c a b
|
|
c b a
|
|
c b b
|
|
d a a
|
|
d a b
|
|
d b a
|
|
d b b
|
|
select distinct a1,a2,b from t1 where (a2 >= 'b') and (b = 'a');
|
|
a1 a2 b
|
|
a b a
|
|
b b a
|
|
c b a
|
|
d b a
|
|
select distinct a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
|
a1 a2 b c
|
|
a b a i121
|
|
select distinct a1,a2,b from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
|
|
a1 a2 b
|
|
select distinct b from t1 where (a2 >= 'b') and (b = 'a');
|
|
b
|
|
a
|
|
select distinct a1,a2,b from t2;
|
|
a1 a2 b
|
|
a a NULL
|
|
a a a
|
|
a a b
|
|
a b a
|
|
a b b
|
|
b a a
|
|
b a b
|
|
b b a
|
|
b b b
|
|
c a NULL
|
|
c a a
|
|
c a b
|
|
c b a
|
|
c b b
|
|
d a a
|
|
d a b
|
|
d b a
|
|
d b b
|
|
e a a
|
|
e a b
|
|
select distinct a1,a2,b from t2 where (a2 >= 'b') and (b = 'a');
|
|
a1 a2 b
|
|
a b a
|
|
b b a
|
|
c b a
|
|
d b a
|
|
select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
|
a1 a2 b c
|
|
a b a i121
|
|
select distinct a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
|
|
a1 a2 b
|
|
select distinct b from t2 where (a2 >= 'b') and (b = 'a');
|
|
b
|
|
a
|
|
select distinct t_00.a1
|
|
from t1 t_00
|
|
where exists ( select * from t2 where a1 = t_00.a1 );
|
|
a1
|
|
a
|
|
b
|
|
c
|
|
d
|
|
select distinct a1,a1 from t1;
|
|
a1 a1
|
|
a a
|
|
b b
|
|
c c
|
|
d d
|
|
select distinct a2,a1,a2,a1 from t1;
|
|
a2 a1 a2 a1
|
|
a a a a
|
|
b a b a
|
|
a b a b
|
|
b b b b
|
|
a c a c
|
|
b c b c
|
|
a d a d
|
|
b d b d
|
|
select distinct t1.a1,t2.a1 from t1,t2;
|
|
a1 a1
|
|
d a
|
|
c a
|
|
b a
|
|
a a
|
|
d b
|
|
c b
|
|
b b
|
|
a b
|
|
d c
|
|
c c
|
|
b c
|
|
a c
|
|
d d
|
|
c d
|
|
b d
|
|
a d
|
|
d e
|
|
c e
|
|
b e
|
|
a e
|
|
explain select distinct a1,a2,b from t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1`
|
|
explain select distinct a1,a2,b from t1 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 3.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select distinct a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 0.78 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where ((`test`.`t1`.`c` = 'i121') and (`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select distinct a1,a2,b from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 5.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`b` = 'c') and (`test`.`t1`.`a1` > 'a') and (`test`.`t1`.`a2` > 'a')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select distinct b from t1 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 3.33 Using where; Using index; Using temporary
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select distinct a1,a2,b from t2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_2 146 NULL # 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b` from `test`.`t2`
|
|
explain select distinct a1,a2,b from t2 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_2 146 NULL # 3.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` = 'a') and (`test`.`t2`.`a2` >= 'b')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL # 0.61 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where ((`test`.`t2`.`c` = 'i121') and (`test`.`t2`.`b` = 'a') and (`test`.`t2`.`a2` >= 'b')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select distinct a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_2 65 NULL # 5.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` = 'c') and (`test`.`t2`.`a1` > 'a') and (`test`.`t2`.`a2` > 'a')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
explain select distinct b from t2 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_2 146 NULL # 3.33 Using where; Using index; Using temporary
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` = 'a') and (`test`.`t2`.`a2` >= 'b')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`
|
|
select distinct a1,a2,b from t1;
|
|
a1 a2 b
|
|
a a a
|
|
a a b
|
|
a b a
|
|
a b b
|
|
b a a
|
|
b a b
|
|
b b a
|
|
b b b
|
|
c a a
|
|
c a b
|
|
c b a
|
|
c b b
|
|
d a a
|
|
d a b
|
|
d b a
|
|
d b b
|
|
select distinct a1,a2,b from t1 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
a1 a2 b
|
|
a b a
|
|
b b a
|
|
c b a
|
|
d b a
|
|
select distinct a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121') group by a1,a2,b;
|
|
a1 a2 b c
|
|
a b a i121
|
|
select distinct a1,a2,b from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
a1 a2 b
|
|
select distinct b from t1 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
b
|
|
a
|
|
select distinct a1,a2,b from t2;
|
|
a1 a2 b
|
|
a a NULL
|
|
a a a
|
|
a a b
|
|
a b a
|
|
a b b
|
|
b a a
|
|
b a b
|
|
b b a
|
|
b b b
|
|
c a NULL
|
|
c a a
|
|
c a b
|
|
c b a
|
|
c b b
|
|
d a a
|
|
d a b
|
|
d b a
|
|
d b b
|
|
e a a
|
|
e a b
|
|
select distinct a1,a2,b from t2 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
a1 a2 b
|
|
a b a
|
|
b b a
|
|
c b a
|
|
d b a
|
|
select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121') group by a1,a2,b;
|
|
a1 a2 b c
|
|
a b a i121
|
|
select distinct a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c') group by a1,a2,b;
|
|
a1 a2 b
|
|
select distinct b from t2 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
|
b
|
|
a
|
|
explain select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 65 100.00 Using where; Using index for group-by (scanning)
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`) AS `count(distinct a1,a2,b)` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b'))
|
|
explain select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_1 idx_t1_1 163 NULL 129 100.00 Using where; Using index for group-by (scanning)
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`,`test`.`t1`.`c`) AS `count(distinct a1,a2,b,c)` from `test`.`t1` where ((`test`.`t1`.`c` = 'i121') and (`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b'))
|
|
explain select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 5.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`) AS `count(distinct a1,a2,b)` from `test`.`t1` where ((`test`.`t1`.`b` = 'c') and (`test`.`t1`.`a1` > 'a') and (`test`.`t1`.`a2` > 'a'))
|
|
explain select count(distinct b) from t1 where (a2 >= 'b') and (b = 'a');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 3.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`b`) AS `count(distinct b)` from `test`.`t1` where ((`test`.`t1`.`b` = 'a') and (`test`.`t1`.`a2` >= 'b'))
|
|
explain select 98 + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 33.33 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select (98 + count(distinct `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`)) AS `98 + count(distinct a1,a2,b)` from `test`.`t1` where ((`test`.`t1`.`a1` > 'a') and (`test`.`t1`.`a2` > 'a'))
|
|
select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
|
|
count(distinct a1,a2,b)
|
|
4
|
|
select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
|
count(distinct a1,a2,b,c)
|
|
1
|
|
select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
|
|
count(distinct a1,a2,b)
|
|
0
|
|
select count(distinct b) from t1 where (a2 >= 'b') and (b = 'a');
|
|
count(distinct b)
|
|
1
|
|
select 98 + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
|
|
98 + count(distinct a1,a2,b)
|
|
104
|
|
explain select a1,a2,b, concat(min(c), max(c)) from t1 where a1 < 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 65 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,concat(min(`test`.`t1`.`c`),max(`test`.`t1`.`c`)) AS `concat(min(c), max(c))` from `test`.`t1` where (`test`.`t1`.`a1` < 'd') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select concat(a1,min(c)),b from t1 where a1 < 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 65 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select concat(`test`.`t1`.`a1`,min(`test`.`t1`.`c`)) AS `concat(a1,min(c))`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (`test`.`t1`.`a1` < 'd') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select concat(a1,min(c)),b,max(c) from t1 where a1 < 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 65 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select concat(`test`.`t1`.`a1`,min(`test`.`t1`.`c`)) AS `concat(a1,min(c))`,`test`.`t1`.`b` AS `b`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`a1` < 'd') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select concat(a1,a2),b,min(c),max(c) from t1 where a1 < 'd' group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 65 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select concat(`test`.`t1`.`a1`,`test`.`t1`.`a2`) AS `concat(a1,a2)`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (`test`.`t1`.`a1` < 'd') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select concat(ord(min(b)),ord(max(b))),min(b),max(b) from t1 group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 33 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select concat(ord(min(`test`.`t1`.`b`)),ord(max(`test`.`t1`.`b`))) AS `concat(ord(min(b)),ord(max(b)))`,min(`test`.`t1`.`b`) AS `min(b)`,max(`test`.`t1`.`b`) AS `max(b)` from `test`.`t1` group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
select a1,a2,b, concat(min(c), max(c)) from t1 where a1 < 'd' group by a1,a2,b;
|
|
a1 a2 b concat(min(c), max(c))
|
|
a a a a111d111
|
|
a a b e112h112
|
|
a b a i121l121
|
|
a b b m122p122
|
|
b a a a211d211
|
|
b a b e212h212
|
|
b b a i221l221
|
|
b b b m222p222
|
|
c a a a311d311
|
|
c a b e312h312
|
|
c b a i321l321
|
|
c b b m322p322
|
|
select concat(a1,min(c)),b from t1 where a1 < 'd' group by a1,a2,b;
|
|
concat(a1,min(c)) b
|
|
aa111 a
|
|
ae112 b
|
|
ai121 a
|
|
am122 b
|
|
ba211 a
|
|
be212 b
|
|
bi221 a
|
|
bm222 b
|
|
ca311 a
|
|
ce312 b
|
|
ci321 a
|
|
cm322 b
|
|
select concat(a1,min(c)),b,max(c) from t1 where a1 < 'd' group by a1,a2,b;
|
|
concat(a1,min(c)) b max(c)
|
|
aa111 a d111
|
|
ae112 b h112
|
|
ai121 a l121
|
|
am122 b p122
|
|
ba211 a d211
|
|
be212 b h212
|
|
bi221 a l221
|
|
bm222 b p222
|
|
ca311 a d311
|
|
ce312 b h312
|
|
ci321 a l321
|
|
cm322 b p322
|
|
select concat(a1,a2),b,min(c),max(c) from t1 where a1 < 'd' group by a1,a2,b;
|
|
concat(a1,a2) b min(c) max(c)
|
|
aa a a111 d111
|
|
aa b e112 h112
|
|
ab a i121 l121
|
|
ab b m122 p122
|
|
ba a a211 d211
|
|
ba b e212 h212
|
|
bb a i221 l221
|
|
bb b m222 p222
|
|
ca a a311 d311
|
|
ca b e312 h312
|
|
cb a i321 l321
|
|
cb b m322 p322
|
|
select concat(ord(min(b)),ord(max(b))),min(b),max(b) from t1 group by a1,a2;
|
|
concat(ord(min(b)),ord(max(b))) min(b) max(b)
|
|
9798 a b
|
|
9798 a b
|
|
9798 a b
|
|
9798 a b
|
|
9798 a b
|
|
9798 a b
|
|
9798 a b
|
|
9798 a b
|
|
explain select a1,a2,b,d,min(c),max(c) from t1 group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 100.00 NULL
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`d` AS `d`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,d from t1 group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 100.00 NULL
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`d` AS `d` from `test`.`t1` group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,min(b),max(b) from t1
|
|
where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (c > 'a111') group by a1,a2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 130 NULL 4 11.11 Using index condition; Using where
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,min(`test`.`t1`.`b`) AS `min(b)`,max(`test`.`t1`.`b`) AS `max(b)` from `test`.`t1` where (((`test`.`t1`.`a1` = 'b') or (`test`.`t1`.`a1` = 'd') or (`test`.`t1`.`a1` = 'a') or (`test`.`t1`.`a1` = 'c')) and (`test`.`t1`.`a2` > 'a') and (`test`.`t1`.`c` > 'a111')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
|
|
explain select a1,a2,b,min(c),max(c) from t1
|
|
where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (d > 'xy2') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 130 NULL 4 11.11 Using index condition; Using where
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (((`test`.`t1`.`a1` = 'b') or (`test`.`t1`.`a1` = 'd') or (`test`.`t1`.`a1` = 'a') or (`test`.`t1`.`a1` = 'c')) and (`test`.`t1`.`a2` > 'a') and (`test`.`t1`.`d` > 'xy2')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,b,c from t1
|
|
where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (d > 'xy2') group by a1,a2,b,c;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_0 65 NULL 4 11.11 Using index condition; Using where; Using temporary
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where (((`test`.`t1`.`a1` = 'b') or (`test`.`t1`.`a1` = 'd') or (`test`.`t1`.`a1` = 'a') or (`test`.`t1`.`a1` = 'c')) and (`test`.`t1`.`a2` > 'a') and (`test`.`t1`.`d` > 'xy2')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`,`test`.`t1`.`c`
|
|
explain select a1,a2,b,max(c),min(c) from t2 where (a2 = 'a') and (b = 'b') or (b < 'b') group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 164 34.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` where (((`test`.`t2`.`b` = 'b') and (`test`.`t2`.`a2` = 'a')) or (`test`.`t2`.`b` < 'b')) group by `test`.`t2`.`a1`
|
|
explain select a1,a2,b from t1 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (c > 'a111') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 130 NULL 4 11.11 Using index condition; Using where
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (((`test`.`t1`.`a1` = 'b') or (`test`.`t1`.`a1` = 'd') or (`test`.`t1`.`a1` = 'a') or (`test`.`t1`.`a1` = 'c')) and (`test`.`t1`.`a2` > 'a') and (`test`.`t1`.`c` > 'a111')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,min(b),c from t2 where (a2 = 'a') and (c = 'a111') group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 164 1.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,min(`test`.`t2`.`b`) AS `min(b)`,`test`.`t2`.`c` AS `c` from `test`.`t2` where ((`test`.`t2`.`c` = 'a111') and (`test`.`t2`.`a2` = 'a')) group by `test`.`t2`.`a1`
|
|
select a1,a2,min(b),c from t2 where (a2 = 'a') and (c = 'a111') group by a1;
|
|
a1 a2 min(b) c
|
|
a a a a111
|
|
explain select a1,a2,b,max(c),min(c) from t2 where (a2 = 'a') and (b = 'b') or (b = 'a') group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 164 10.90 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,max(`test`.`t2`.`c`) AS `max(c)`,min(`test`.`t2`.`c`) AS `min(c)` from `test`.`t2` where (((`test`.`t2`.`b` = 'b') and (`test`.`t2`.`a2` = 'a')) or (`test`.`t2`.`b` = 'a')) group by `test`.`t2`.`a1`
|
|
explain select a1,a2,b,min(c),max(c) from t2
|
|
where (c > 'a000') and (c <= 'd999') and (c like '_8__') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index idx_t2_1,idx_t2_2 idx_t2_1 163 NULL 164 1.23 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,min(`test`.`t2`.`c`) AS `min(c)`,max(`test`.`t2`.`c`) AS `max(c)` from `test`.`t2` where ((`test`.`t2`.`c` > 'a000') and (`test`.`t2`.`c` <= 'd999') and (`test`.`t2`.`c` like '_8__')) group by `test`.`t2`.`a1`,`test`.`t2`.`a2`,`test`.`t2`.`b`
|
|
explain select a1, a2, b, c, min(d), max(d) from t1 group by a1,a2,b,c;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1 idx_t1_1 163 NULL 128 100.00 NULL
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,min(`test`.`t1`.`d`) AS `min(d)`,max(`test`.`t1`.`d`) AS `max(d)` from `test`.`t1` group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`,`test`.`t1`.`c`
|
|
explain select a1,a2,count(a2) from t1 group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,count(`test`.`t1`.`a2`) AS `count(a2)` from `test`.`t1` group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select a1,a2,count(a2) from t1 where (a1 > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,count(`test`.`t1`.`a2`) AS `count(a2)` from `test`.`t1` where (`test`.`t1`.`a1` > 'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select sum(ord(a1)) from t1 where (a1 > 'a') group by a1,a2,b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select sum(ord(`test`.`t1`.`a1`)) AS `sum(ord(a1))` from `test`.`t1` where (`test`.`t1`.`a1` > 'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
|
explain select distinct(a1) from t1 where ord(a2) = 98;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a1` AS `a1` from `test`.`t1` where (ord(`test`.`t1`.`a2`) = 98)
|
|
select distinct(a1) from t1 where ord(a2) = 98;
|
|
a1
|
|
a
|
|
b
|
|
c
|
|
d
|
|
explain select a1 from t1 where a2 = 'b' group by a1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL 17 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1` from `test`.`t1` where (`test`.`t1`.`a2` = 'b') group by `test`.`t1`.`a1`
|
|
select a1 from t1 where a2 = 'b' group by a1;
|
|
a1
|
|
a
|
|
b
|
|
c
|
|
d
|
|
explain select distinct a1 from t1 where a2 = 'b';
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL 17 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a1` AS `a1` from `test`.`t1` where (`test`.`t1`.`a2` = 'b')
|
|
select distinct a1 from t1 where a2 = 'b';
|
|
a1
|
|
a
|
|
b
|
|
c
|
|
d
|
|
drop table t1,t2,t3;
|
|
create table t1 (c1 int not null,c2 int not null, primary key(c1,c2));
|
|
insert into t1 (c1,c2) values
|
|
(10,1),(10,2),(10,3),(20,4),(20,5),(20,6),(30,7),(30,8),(30,9);
|
|
select distinct c1, c2 from t1 order by c2;
|
|
c1 c2
|
|
10 1
|
|
10 2
|
|
10 3
|
|
20 4
|
|
20 5
|
|
20 6
|
|
30 7
|
|
30 8
|
|
30 9
|
|
select c1,min(c2) as c2 from t1 group by c1 order by c2;
|
|
c1 c2
|
|
10 1
|
|
20 4
|
|
30 7
|
|
select c1,c2 from t1 group by c1,c2 order by c2;
|
|
c1 c2
|
|
10 1
|
|
10 2
|
|
10 3
|
|
20 4
|
|
20 5
|
|
20 6
|
|
30 7
|
|
30 8
|
|
30 9
|
|
drop table t1;
|
|
CREATE TABLE t1 (a varchar(5), b int(11), PRIMARY KEY (a,b)) charset utf8mb4;
|
|
Warnings:
|
|
Warning 1681 Integer display width is deprecated and will be removed in a future release.
|
|
INSERT INTO t1 VALUES ('AA',1), ('AA',2), ('AA',3), ('BB',1), ('AA',4);
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
OPTIMIZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 optimize status OK
|
|
SELECT a FROM t1 WHERE a='AA' GROUP BY a;
|
|
a
|
|
AA
|
|
SELECT a FROM t1 WHERE a='BB' GROUP BY a;
|
|
a
|
|
BB
|
|
EXPLAIN SELECT a FROM t1 WHERE a='AA' GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL ref PRIMARY PRIMARY 22 const 1 100.00 Using index; Using temporary
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = 'AA') group by `test`.`t1`.`a`
|
|
EXPLAIN SELECT a FROM t1 WHERE a='BB' GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL ref PRIMARY PRIMARY 22 const 1 100.00 Using index; Using temporary
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = 'BB') group by `test`.`t1`.`a`
|
|
SELECT DISTINCT a FROM t1 WHERE a='BB';
|
|
a
|
|
BB
|
|
SELECT DISTINCT a FROM t1 WHERE a LIKE 'B%';
|
|
a
|
|
BB
|
|
SELECT a FROM t1 WHERE a LIKE 'B%' GROUP BY a;
|
|
a
|
|
BB
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a varchar(64) NOT NULL default '', PRIMARY KEY(a)) charset utf8mb4;
|
|
INSERT INTO t1 (a) VALUES
|
|
(''), ('CENTRAL'), ('EASTERN'), ('GREATER LONDON'),
|
|
('NORTH CENTRAL'), ('NORTH EAST'), ('NORTH WEST'), ('SCOTLAND'),
|
|
('SOUTH EAST'), ('SOUTH WEST'), ('WESTERN');
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
EXPLAIN SELECT DISTINCT a,a FROM t1 ORDER BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index PRIMARY PRIMARY 258 NULL 11 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a` AS `a`,`test`.`t1`.`a` AS `a` from `test`.`t1` order by `test`.`t1`.`a`
|
|
SELECT DISTINCT a,a FROM t1 ORDER BY a;
|
|
a a
|
|
|
|
CENTRAL CENTRAL
|
|
EASTERN EASTERN
|
|
GREATER LONDON GREATER LONDON
|
|
NORTH CENTRAL NORTH CENTRAL
|
|
NORTH EAST NORTH EAST
|
|
NORTH WEST NORTH WEST
|
|
SCOTLAND SCOTLAND
|
|
SOUTH EAST SOUTH EAST
|
|
SOUTH WEST SOUTH WEST
|
|
WESTERN WESTERN
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (id1 INT, id2 INT);
|
|
CREATE TABLE t2 (id2 INT, id3 INT, id5 INT);
|
|
CREATE TABLE t3 (id3 INT, id4 INT);
|
|
CREATE TABLE t4 (id4 INT);
|
|
CREATE TABLE t5 (id5 INT, id6 INT);
|
|
CREATE TABLE t6 (id6 INT);
|
|
INSERT INTO t1 VALUES(1,1);
|
|
INSERT INTO t2 VALUES(1,1,1);
|
|
INSERT INTO t3 VALUES(1,1);
|
|
INSERT INTO t4 VALUES(1);
|
|
INSERT INTO t5 VALUES(1,1);
|
|
INSERT INTO t6 VALUES(1);
|
|
SELECT * FROM
|
|
t1
|
|
NATURAL JOIN
|
|
(t2 JOIN (t3 NATURAL JOIN t4, t5 NATURAL JOIN t6)
|
|
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5));
|
|
id2 id1 id3 id5 id4 id3 id6 id5
|
|
1 1 1 1 1 1 1 1
|
|
SELECT * FROM
|
|
t1
|
|
NATURAL JOIN
|
|
(((t3 NATURAL JOIN t4) join (t5 NATURAL JOIN t6) on t3.id4 = t5.id5) JOIN t2
|
|
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5));
|
|
id2 id1 id4 id3 id6 id5 id3 id5
|
|
1 1 1 1 1 1 1 1
|
|
SELECT * FROM t1 NATURAL JOIN ((t3 join (t5 NATURAL JOIN t6)) JOIN t2);
|
|
id2 id1 id3 id4 id6 id5 id3 id5
|
|
1 1 1 1 1 1 1 1
|
|
SELECT * FROM
|
|
(t2 JOIN (t3 NATURAL JOIN t4, t5 NATURAL JOIN t6)
|
|
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5))
|
|
NATURAL JOIN
|
|
t1;
|
|
id2 id3 id5 id4 id3 id6 id5 id1
|
|
1 1 1 1 1 1 1 1
|
|
SELECT * FROM
|
|
(t2 JOIN ((t3 NATURAL JOIN t4) join (t5 NATURAL JOIN t6)))
|
|
NATURAL JOIN
|
|
t1;
|
|
id2 id3 id5 id4 id3 id6 id5 id1
|
|
1 1 1 1 1 1 1 1
|
|
DROP TABLE t1,t2,t3,t4,t5,t6;
|
|
CREATE TABLE t1 (a int, b int, PRIMARY KEY (a,b), KEY b (b));
|
|
INSERT INTO t1 VALUES (1,1),(1,2),(1,0),(1,3);
|
|
INSERT INTO t1 VALUES (2,1),(2,2),(2,0),(2,3);
|
|
INSERT INTO t1 VALUES (3,1),(3,2),(3,0),(3,3);
|
|
CREATE TABLE t2 (a int, b int, c int, PRIMARY KEY (a,b,c));
|
|
INSERT INTO t2 SELECT a,b,b FROM t1;
|
|
ANALYZE TABLE t1, t2;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
test.t2 analyze status OK
|
|
explain SELECT MAX(b), a FROM t1 WHERE b < 2 AND a = 1 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range PRIMARY,b b 4 NULL 1 16.67 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select max(`test`.`t1`.`b`) AS `MAX(b)`,`test`.`t1`.`a` AS `a` from `test`.`t1` where ((`test`.`t1`.`a` = 1) and (`test`.`t1`.`b` < 2)) group by `test`.`t1`.`a`
|
|
SELECT MAX(b), a FROM t1 WHERE b < 2 AND a = 1 GROUP BY a;
|
|
MAX(b) a
|
|
1 1
|
|
SELECT MIN(b), a FROM t1 WHERE b > 1 AND a = 1 GROUP BY a;
|
|
MIN(b) a
|
|
2 1
|
|
explain SELECT MIN(c) FROM t2 WHERE b = 2 and a = 1 and c > 1 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range PRIMARY PRIMARY 12 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select min(`test`.`t2`.`c`) AS `MIN(c)` from `test`.`t2` where ((`test`.`t2`.`a` = 1) and (`test`.`t2`.`b` = 2) and (`test`.`t2`.`c` > 1)) group by `test`.`t2`.`a`
|
|
SELECT MIN(c) FROM t2 WHERE b = 2 and a = 1 and c > 1 GROUP BY a;
|
|
MIN(c)
|
|
2
|
|
DROP TABLE t1,t2;
|
|
CREATE TABLE t1 (a INT, b INT, INDEX (a,b));
|
|
INSERT INTO t1 (a, b) VALUES (1,1), (1,2), (1,3), (1,4), (1,5),
|
|
(2,2), (2,3), (2,1), (3,1), (4,1), (4,2), (4,3), (4,4), (4,5), (4,6),
|
|
(5,1), (5,2), (5,3), (5,4), (5,5);
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
EXPLAIN SELECT max(b), a FROM t1 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select max(`test`.`t1`.`b`) AS `max(b)`,`test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a`
|
|
FLUSH STATUS;
|
|
SELECT max(b), a FROM t1 GROUP BY a;
|
|
max(b) a
|
|
5 1
|
|
3 2
|
|
1 3
|
|
6 4
|
|
5 5
|
|
SHOW STATUS LIKE 'handler_read__e%';
|
|
Variable_name Value
|
|
Handler_read_key 10
|
|
Handler_read_next 0
|
|
EXPLAIN SELECT max(b), a FROM t1 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select max(`test`.`t1`.`b`) AS `max(b)`,`test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a`
|
|
FLUSH STATUS;
|
|
CREATE TABLE t2 SELECT max(b), a FROM t1 GROUP BY a;
|
|
SHOW STATUS LIKE 'handler_read__e%';
|
|
Variable_name Value
|
|
Handler_read_key 18
|
|
Handler_read_next 0
|
|
FLUSH STATUS;
|
|
SELECT * FROM (SELECT max(b), a FROM t1 GROUP BY a) b;
|
|
max(b) a
|
|
5 1
|
|
3 2
|
|
1 3
|
|
6 4
|
|
5 5
|
|
SHOW STATUS LIKE 'handler_read__e%';
|
|
Variable_name Value
|
|
Handler_read_key 10
|
|
Handler_read_next 0
|
|
FLUSH STATUS;
|
|
(SELECT max(b), a FROM t1 GROUP BY a) UNION
|
|
(SELECT max(b), a FROM t1 GROUP BY a);
|
|
max(b) a
|
|
5 1
|
|
3 2
|
|
1 3
|
|
6 4
|
|
5 5
|
|
SHOW STATUS LIKE 'handler_read__e%';
|
|
Variable_name Value
|
|
Handler_read_key 20
|
|
Handler_read_next 0
|
|
EXPLAIN (SELECT max(b), a FROM t1 GROUP BY a) UNION
|
|
(SELECT max(b), a FROM t1 GROUP BY a);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
2 UNION t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
NULL UNION RESULT <union1,2> NULL ALL NULL NULL NULL NULL NULL NULL Using temporary
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select max(`test`.`t1`.`b`) AS `max(b)`,`test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a` union /* select#2 */ select max(`test`.`t1`.`b`) AS `max(b)`,`test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a`
|
|
EXPLAIN SELECT (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2) x
|
|
FROM t1 AS t1_outer;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1_outer NULL index NULL a 10 NULL 20 100.00 Using index
|
|
2 SUBQUERY t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select (/* select#2 */ select max(`test`.`t1`.`b`) from `test`.`t1` group by `test`.`t1`.`a` having (`test`.`t1`.`a` < 2)) AS `x` from `test`.`t1` `t1_outer`
|
|
EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE EXISTS
|
|
(SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1_outer NULL index NULL a 10 NULL 20 100.00 Using index
|
|
2 SUBQUERY t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select 1 AS `1` from `test`.`t1` `t1_outer` where true
|
|
EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE
|
|
(SELECT max(b) FROM t1 GROUP BY a HAVING a < 2) > 12;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
|
2 SUBQUERY t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select 1 AS `1` from `test`.`t1` `t1_outer` where false
|
|
EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE
|
|
a IN (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1_outer NULL index NULL a 10 NULL 20 100.00 Using where; Using index
|
|
2 SUBQUERY t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select 1 AS `1` from `test`.`t1` `t1_outer` where <in_optimizer>(`test`.`t1_outer`.`a`,`test`.`t1_outer`.`a` in ( <materialize> (/* select#2 */ select max(`test`.`t1`.`b`) from `test`.`t1` group by `test`.`t1`.`a` having (`test`.`t1`.`a` < 2) ), <primary_index_lookup>(`test`.`t1_outer`.`a` in <temporary table> on <auto_distinct_key> where ((`test`.`t1_outer`.`a` = `materialized-subquery`.`max(b)`)))))
|
|
EXPLAIN SELECT 1 FROM t1 AS t1_outer GROUP BY a HAVING
|
|
a > (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1_outer NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
2 SUBQUERY t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select 1 AS `1` from `test`.`t1` `t1_outer` group by `test`.`t1_outer`.`a` having (`test`.`t1_outer`.`a` > (/* select#2 */ select max(`test`.`t1`.`b`) from `test`.`t1` group by `test`.`t1`.`a` having (`test`.`t1`.`a` < 2)))
|
|
EXPLAIN SELECT 1 FROM t1 AS t1_outer1 JOIN t1 AS t1_outer2
|
|
ON t1_outer1.a = (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2)
|
|
AND t1_outer1.b = t1_outer2.b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1_outer1 NULL ref a a 5 const 1 100.00 Using where; Using index
|
|
1 PRIMARY t1_outer2 NULL index NULL a 10 NULL 20 10.00 Using where; Using index; Using join buffer (Block Nested Loop)
|
|
2 SUBQUERY t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select 1 AS `1` from `test`.`t1` `t1_outer1` join `test`.`t1` `t1_outer2` where ((`test`.`t1_outer2`.`b` = `test`.`t1_outer1`.`b`) and (`test`.`t1_outer1`.`a` = (/* select#2 */ select max(`test`.`t1`.`b`) from `test`.`t1` group by `test`.`t1`.`a` having (`test`.`t1`.`a` < 2))))
|
|
EXPLAIN SELECT (SELECT (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2) x
|
|
FROM t1 AS t1_outer) x2 FROM t1 AS t1_outer2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1_outer2 NULL index NULL a 10 NULL 20 100.00 Using index
|
|
2 SUBQUERY t1_outer NULL index NULL a 10 NULL 20 100.00 Using index
|
|
3 SUBQUERY t1 NULL range a a 5 NULL 6 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select (/* select#2 */ select (/* select#3 */ select max(`test`.`t1`.`b`) from `test`.`t1` group by `test`.`t1`.`a` having (`test`.`t1`.`a` < 2)) AS `x` from `test`.`t1` `t1_outer`) AS `x2` from `test`.`t1` `t1_outer2`
|
|
CREATE TABLE t3 LIKE t1;
|
|
# Warm-up data-dictionary cache.
|
|
FLUSH STATUS;
|
|
INSERT INTO t3 SELECT a,MAX(b) FROM t1 GROUP BY a;
|
|
SHOW STATUS LIKE 'handler_read__e%';
|
|
Variable_name Value
|
|
Handler_read_key 10
|
|
Handler_read_next 0
|
|
DELETE FROM t3;
|
|
FLUSH STATUS;
|
|
INSERT INTO t3 SELECT 1, (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2)
|
|
FROM t1 LIMIT 1;
|
|
SHOW STATUS LIKE 'handler_read__e%';
|
|
Variable_name Value
|
|
Handler_read_key 10
|
|
Handler_read_next 0
|
|
FLUSH STATUS;
|
|
DELETE FROM t3 WHERE (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2) > 10000;
|
|
SHOW STATUS LIKE 'handler_read__e%';
|
|
Variable_name Value
|
|
Handler_read_key 10
|
|
Handler_read_next 0
|
|
FLUSH STATUS;
|
|
DELETE FROM t3 WHERE (SELECT (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2) x
|
|
FROM t1) > 10000;
|
|
ERROR 21000: Subquery returns more than 1 row
|
|
SHOW STATUS LIKE 'handler_read__e%';
|
|
Variable_name Value
|
|
Handler_read_key 10
|
|
Handler_read_next 1
|
|
DROP TABLE t1,t2,t3;
|
|
CREATE TABLE t1 (a int, INDEX idx(a));
|
|
INSERT INTO t1 VALUES
|
|
(4), (2), (1), (2), (4), (2), (1), (4),
|
|
(4), (2), (1), (2), (2), (4), (1), (4),
|
|
(4), (2), (1), (2), (2), (4), (1), (4);
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
EXPLAIN SELECT DISTINCT(a) FROM t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx idx 5 NULL 13 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a` AS `a` from `test`.`t1`
|
|
SELECT DISTINCT(a) FROM t1;
|
|
a
|
|
1
|
|
2
|
|
4
|
|
EXPLAIN SELECT SQL_BIG_RESULT DISTINCT(a) FROM t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range idx idx 5 NULL 13 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct sql_big_result `test`.`t1`.`a` AS `a` from `test`.`t1`
|
|
SELECT SQL_BIG_RESULT DISTINCT(a) FROM t1;
|
|
a
|
|
1
|
|
2
|
|
4
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a INT, b INT);
|
|
INSERT INTO t1 (a, b) VALUES (1,1), (1,2), (1,3);
|
|
INSERT INTO t1 SELECT a + 1, b FROM t1;
|
|
INSERT INTO t1 SELECT a + 2, b FROM t1;
|
|
INSERT INTO t1 SELECT a + 4, b FROM t1;
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
EXPLAIN
|
|
SELECT a, MIN(b), MAX(b) FROM t1 GROUP BY a ORDER BY a DESC;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 24 100.00 Using temporary; Using filesort
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,min(`test`.`t1`.`b`) AS `MIN(b)`,max(`test`.`t1`.`b`) AS `MAX(b)` from `test`.`t1` group by `test`.`t1`.`a` desc order by `test`.`t1`.`a` desc
|
|
SELECT a, MIN(b), MAX(b) FROM t1 GROUP BY a ORDER BY a DESC;
|
|
a MIN(b) MAX(b)
|
|
8 1 3
|
|
7 1 3
|
|
6 1 3
|
|
5 1 3
|
|
4 1 3
|
|
3 1 3
|
|
2 1 3
|
|
1 1 3
|
|
CREATE INDEX break_it ON t1 (a, b);
|
|
EXPLAIN
|
|
SELECT a, MIN(b), MAX(b) FROM t1 GROUP BY a ORDER BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range break_it break_it 10 NULL # 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,min(`test`.`t1`.`b`) AS `MIN(b)`,max(`test`.`t1`.`b`) AS `MAX(b)` from `test`.`t1` group by `test`.`t1`.`a` order by `test`.`t1`.`a`
|
|
SELECT a, MIN(b), MAX(b) FROM t1 GROUP BY a ORDER BY a;
|
|
a MIN(b) MAX(b)
|
|
1 1 3
|
|
2 1 3
|
|
3 1 3
|
|
4 1 3
|
|
5 1 3
|
|
6 1 3
|
|
7 1 3
|
|
8 1 3
|
|
EXPLAIN
|
|
SELECT a, MIN(b), MAX(b) FROM t1 GROUP BY a ORDER BY a DESC;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range break_it break_it 10 NULL # 100.00 Using index for group-by; Using temporary; Using filesort
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,min(`test`.`t1`.`b`) AS `MIN(b)`,max(`test`.`t1`.`b`) AS `MAX(b)` from `test`.`t1` group by `test`.`t1`.`a` desc order by `test`.`t1`.`a` desc
|
|
SELECT a, MIN(b), MAX(b) FROM t1 GROUP BY a ORDER BY a DESC;
|
|
a MIN(b) MAX(b)
|
|
8 1 3
|
|
7 1 3
|
|
6 1 3
|
|
5 1 3
|
|
4 1 3
|
|
3 1 3
|
|
2 1 3
|
|
1 1 3
|
|
EXPLAIN
|
|
SELECT a, MIN(b), MAX(b), AVG(b) FROM t1 GROUP BY a ORDER BY a DESC;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index break_it break_it 10 NULL # 100.00 Backward index scan; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,min(`test`.`t1`.`b`) AS `MIN(b)`,max(`test`.`t1`.`b`) AS `MAX(b)`,avg(`test`.`t1`.`b`) AS `AVG(b)` from `test`.`t1` group by `test`.`t1`.`a` desc order by `test`.`t1`.`a` desc
|
|
SELECT a, MIN(b), MAX(b), AVG(b) FROM t1 GROUP BY a ORDER BY a DESC;
|
|
a MIN(b) MAX(b) AVG(b)
|
|
8 1 3 2.0000
|
|
7 1 3 2.0000
|
|
6 1 3 2.0000
|
|
5 1 3 2.0000
|
|
4 1 3 2.0000
|
|
3 1 3 2.0000
|
|
2 1 3 2.0000
|
|
1 1 3 2.0000
|
|
DROP TABLE t1;
|
|
create table t1 (a int, b int, primary key (a,b), key `index` (a,b)) engine=MyISAM;
|
|
insert into t1 (a,b) values
|
|
(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),
|
|
(0,7),(0,8),(0,9),(0,10),(0,11),(0,12),(0,13),
|
|
(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),
|
|
(1,7),(1,8),(1,9),(1,10),(1,11),(1,12),(1,13),
|
|
(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),
|
|
(2,7),(2,8),(2,9),(2,10),(2,11),(2,12),(2,13),
|
|
(3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),
|
|
(3,7),(3,8),(3,9),(3,10),(3,11),(3,12),(3,13);
|
|
insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a;
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
select * from t1;
|
|
a b
|
|
0 0
|
|
0 1
|
|
0 2
|
|
0 3
|
|
0 4
|
|
0 5
|
|
0 6
|
|
0 7
|
|
0 8
|
|
0 9
|
|
0 10
|
|
0 11
|
|
0 12
|
|
0 13
|
|
0 14
|
|
1 0
|
|
1 1
|
|
1 2
|
|
1 3
|
|
1 4
|
|
1 5
|
|
1 6
|
|
1 7
|
|
1 8
|
|
1 9
|
|
1 10
|
|
1 11
|
|
1 12
|
|
1 13
|
|
2 0
|
|
2 1
|
|
2 2
|
|
2 3
|
|
2 4
|
|
2 5
|
|
2 6
|
|
2 7
|
|
2 8
|
|
2 9
|
|
2 10
|
|
2 11
|
|
2 12
|
|
2 13
|
|
3 0
|
|
3 1
|
|
3 2
|
|
3 3
|
|
3 4
|
|
3 5
|
|
3 6
|
|
3 7
|
|
3 8
|
|
3 9
|
|
3 10
|
|
3 11
|
|
3 12
|
|
3 13
|
|
explain select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range PRIMARY,index PRIMARY 4 NULL 1 100.00 Using where; Using index for group-by; Using temporary
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select sql_buffer_result `test`.`t1`.`a` AS `a`,(max(`test`.`t1`.`b`) + 1) AS `max(b)+1` from `test`.`t1` where (`test`.`t1`.`a` = 0) group by `test`.`t1`.`a`
|
|
drop table t1;
|
|
CREATE TABLE t1 (a int, b int, c int, d int,
|
|
KEY foo (c,d,a,b), KEY bar (c,a,b,d));
|
|
INSERT INTO t1 VALUES (1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 3), (1, 1, 1, 4);
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT a,b,c+1,d FROM t1;
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
EXPLAIN SELECT DISTINCT c FROM t1 WHERE d=4;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range foo,bar foo 10 NULL 3 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`c` AS `c` from `test`.`t1` where (`test`.`t1`.`d` = 4)
|
|
SELECT DISTINCT c FROM t1 WHERE d=4;
|
|
c
|
|
1
|
|
2
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug #45386: Wrong query result with MIN function in field list,
|
|
# WHERE and GROUP BY clause
|
|
#
|
|
CREATE TABLE t (a INT, b INT, INDEX (a,b));
|
|
INSERT INTO t VALUES (2,0), (2,0), (2,1), (2,1);
|
|
INSERT INTO t SELECT * FROM t;
|
|
INSERT INTO t SELECT * FROM t;
|
|
INSERT INTO t SELECT * FROM t;
|
|
ANALYZE TABLE t;
|
|
Table Op Msg_type Msg_text
|
|
test.t analyze status OK
|
|
# test MIN
|
|
#should use range with index for group by
|
|
EXPLAIN
|
|
SELECT a, MIN(b) FROM t WHERE b <> 0 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t NULL range a a 10 NULL 9 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t`.`a` AS `a`,min(`test`.`t`.`b`) AS `MIN(b)` from `test`.`t` where (`test`.`t`.`b` <> 0) group by `test`.`t`.`a`
|
|
#should return 1 row
|
|
SELECT a, MIN(b) FROM t WHERE b <> 0 GROUP BY a;
|
|
a MIN(b)
|
|
2 1
|
|
# test MAX
|
|
#should use range with index for group by
|
|
EXPLAIN
|
|
SELECT a, MAX(b) FROM t WHERE b <> 1 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t NULL range a a 10 NULL 9 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t`.`a` AS `a`,max(`test`.`t`.`b`) AS `MAX(b)` from `test`.`t` where (`test`.`t`.`b` <> 1) group by `test`.`t`.`a`
|
|
#should return 1 row
|
|
SELECT a, MAX(b) FROM t WHERE b <> 1 GROUP BY a;
|
|
a MAX(b)
|
|
2 0
|
|
# test 3 ranges and use the middle one
|
|
INSERT INTO t SELECT a, 2 FROM t;
|
|
ANALYZE TABLE t;
|
|
Table Op Msg_type Msg_text
|
|
test.t analyze status OK
|
|
#should use range with index for group by
|
|
EXPLAIN
|
|
SELECT a, MAX(b) FROM t WHERE b > 0 AND b < 2 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t NULL range a a 10 NULL 33 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t`.`a` AS `a`,max(`test`.`t`.`b`) AS `MAX(b)` from `test`.`t` where ((`test`.`t`.`b` > 0) and (`test`.`t`.`b` < 2)) group by `test`.`t`.`a`
|
|
#should return 1 row
|
|
SELECT a, MAX(b) FROM t WHERE b > 0 AND b < 2 GROUP BY a;
|
|
a MAX(b)
|
|
2 1
|
|
DROP TABLE t;
|
|
#
|
|
# Bug #48472: Loose index scan inappropriately chosen for some WHERE
|
|
# conditions
|
|
#
|
|
CREATE TABLE t (a INT, b INT, INDEX (a,b));
|
|
INSERT INTO t VALUES (2,0), (2,0), (2,1), (2,1);
|
|
INSERT INTO t SELECT * FROM t;
|
|
SELECT a, MAX(b) FROM t WHERE 0=b+0 GROUP BY a;
|
|
a MAX(b)
|
|
2 0
|
|
DROP TABLE t;
|
|
End of 5.0 tests
|
|
#
|
|
# Bug #46607: Assertion failed: (cond_type == Item::FUNC_ITEM) results in
|
|
# server crash
|
|
#
|
|
CREATE TABLE t (a INT, b INT, INDEX (a,b));
|
|
INSERT INTO t VALUES (2,0), (2,0), (2,1), (2,1);
|
|
INSERT INTO t SELECT * FROM t;
|
|
SELECT a, MAX(b) FROM t WHERE b GROUP BY a;
|
|
a MAX(b)
|
|
2 1
|
|
DROP TABLE t;
|
|
CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL, KEY (b));
|
|
INSERT INTO t1 VALUES(1,1),(2,1);
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
SELECT 1 AS c, b FROM t1 WHERE b IN (1,2) GROUP BY c, b;
|
|
c b
|
|
1 1
|
|
SELECT a FROM t1 WHERE b=1;
|
|
a
|
|
1
|
|
2
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug#47762: Incorrect result from MIN() when WHERE tests NOT NULL column
|
|
# for NULL
|
|
#
|
|
## Test for NULLs allowed
|
|
CREATE TABLE t1 ( a INT, KEY (a) );
|
|
INSERT INTO t1 VALUES (1), (2), (3);
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a = NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a = NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a <> NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a <> NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a > NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a > NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a < NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a < NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a <=> NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL No matching min/max row
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a <=> NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND 10;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND 10;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN 10 AND NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN 10 AND NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a = (SELECT a FROM t1 WHERE a < 0);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
x x x NULL x x x x x x 100.00 Using where; Using index
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a = (SELECT a FROM t1 WHERE a < 0);
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a IS NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL No matching min/max row
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a IS NULL;
|
|
MIN( a )
|
|
NULL
|
|
INSERT INTO t1 VALUES (NULL), (NULL);
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a = NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a = NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a <> NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a <> NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a > NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a > NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a < NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a < NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a <=> NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL Select tables optimized away
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a <=> NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND 10;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND 10;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN 10 AND NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN 10 AND NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a = (SELECT a FROM t1 WHERE a < 0);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
x x x NULL x x x x x x 100.00 Using where; Using index
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a = (SELECT a FROM t1 WHERE a < 0);
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a IS NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL Select tables optimized away
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a IS NULL;
|
|
MIN( a )
|
|
NULL
|
|
DROP TABLE t1;
|
|
## Test for NOT NULLs
|
|
CREATE TABLE t1 ( a INT NOT NULL PRIMARY KEY);
|
|
INSERT INTO t1 VALUES (1), (2), (3);
|
|
#
|
|
# NULL-safe operator test disabled for non-NULL indexed columns.
|
|
#
|
|
# See bugs
|
|
#
|
|
# - Bug#52174: Sometimes wrong plan when reading a MAX value from
|
|
# non-NULL index
|
|
#
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a = NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a = NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a <> NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a <> NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a > NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a > NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a < NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a < NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND 10;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND 10;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN 10 AND NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a BETWEEN 10 AND NULL;
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a = (SELECT a FROM t1 WHERE a < 0);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL no matching row in const table
|
|
x x x NULL x x x x x x 100.00 Using where; Using index
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a = (SELECT a FROM t1 WHERE a < 0);
|
|
MIN( a )
|
|
NULL
|
|
EXPLAIN
|
|
SELECT MIN( a ) FROM t1 WHERE a IS NULL;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
x x x NULL x x x x x x NULL Impossible WHERE
|
|
Warnings:
|
|
x x x
|
|
SELECT MIN( a ) FROM t1 WHERE a IS NULL;
|
|
MIN( a )
|
|
NULL
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug#53859: Valgrind: opt_sum_query(TABLE_LIST*, List<Item>&, Item*) at
|
|
# opt_sum.cc:305
|
|
#
|
|
CREATE TABLE t1 ( a INT, KEY (a) );
|
|
INSERT INTO t1 VALUES (1), (2), (3);
|
|
SELECT MIN( a ) AS min_a
|
|
FROM t1
|
|
WHERE a > 1 AND a IS NULL
|
|
ORDER BY min_a;
|
|
min_a
|
|
NULL
|
|
DROP TABLE t1;
|
|
End of 5.1 tests
|
|
#
|
|
# WL#3220 (Loose index scan for COUNT DISTINCT)
|
|
#
|
|
CREATE TABLE t1 (a INT, b INT, c INT, KEY (a,b));
|
|
INSERT INTO t1 VALUES (1,1,1), (1,2,1), (1,3,1), (1,4,1);
|
|
INSERT INTO t1 SELECT a, b + 4, 1 FROM t1;
|
|
INSERT INTO t1 SELECT a + 1, b, 1 FROM t1;
|
|
INSERT INTO t1 SELECT a + 2, b + 8, 1 FROM t1;
|
|
CREATE TABLE t2 (a INT, b INT, c INT, d INT, e INT, f INT, KEY (a,b,c));
|
|
INSERT INTO t2 VALUES (1,1,1,1,1,1), (1,2,1,1,1,1), (1,3,1,1,1,1),
|
|
(1,4,1,1,1,1);
|
|
INSERT INTO t2 SELECT a, b + 4, c,d,e,f FROM t2;
|
|
INSERT INTO t2 SELECT a + 1, b, c,d,e,f FROM t2;
|
|
INSERT INTO t2 SELECT a + 2, b + 8, c,d,e,f FROM t2;
|
|
ANALYZE TABLE t1, t2;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
test.t2 analyze status OK
|
|
EXPLAIN SELECT COUNT(DISTINCT a) FROM t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 5 NULL 9 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT a)` from `test`.`t1`
|
|
SELECT COUNT(DISTINCT a) FROM t1;
|
|
COUNT(DISTINCT a)
|
|
4
|
|
EXPLAIN SELECT COUNT(DISTINCT a,b) FROM t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 10 NULL 17 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a`,`test`.`t1`.`b`) AS `COUNT(DISTINCT a,b)` from `test`.`t1`
|
|
SELECT COUNT(DISTINCT a,b) FROM t1;
|
|
COUNT(DISTINCT a,b)
|
|
32
|
|
EXPLAIN SELECT COUNT(DISTINCT b,a) FROM t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 10 NULL 17 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`b`,`test`.`t1`.`a`) AS `COUNT(DISTINCT b,a)` from `test`.`t1`
|
|
SELECT COUNT(DISTINCT b,a) FROM t1;
|
|
COUNT(DISTINCT b,a)
|
|
32
|
|
EXPLAIN SELECT COUNT(DISTINCT b) FROM t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index a a 10 NULL 32 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`b`) AS `COUNT(DISTINCT b)` from `test`.`t1`
|
|
SELECT COUNT(DISTINCT b) FROM t1;
|
|
COUNT(DISTINCT b)
|
|
16
|
|
EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 5 NULL 9 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT a)` from `test`.`t1` group by `test`.`t1`.`a`
|
|
SELECT COUNT(DISTINCT a) FROM t1 GROUP BY a;
|
|
COUNT(DISTINCT a)
|
|
1
|
|
1
|
|
1
|
|
1
|
|
EXPLAIN SELECT COUNT(DISTINCT b) FROM t1 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 10 NULL 17 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`b`) AS `COUNT(DISTINCT b)` from `test`.`t1` group by `test`.`t1`.`a`
|
|
SELECT COUNT(DISTINCT b) FROM t1 GROUP BY a;
|
|
COUNT(DISTINCT b)
|
|
8
|
|
8
|
|
8
|
|
8
|
|
EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 GROUP BY b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index a a 10 NULL 32 100.00 Using index; Using filesort
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT a)` from `test`.`t1` group by `test`.`t1`.`b`
|
|
SELECT COUNT(DISTINCT a) FROM t1 GROUP BY b;
|
|
COUNT(DISTINCT a)
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
EXPLAIN SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 5 NULL 9 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT a)` from `test`.`t1`
|
|
SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
|
|
COUNT(DISTINCT a)
|
|
4
|
|
EXPLAIN SELECT COUNT(DISTINCT a, b + 0) FROM t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index NULL a 10 NULL 32 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a`,(`test`.`t1`.`b` + 0)) AS `COUNT(DISTINCT a, b + 0)` from `test`.`t1`
|
|
SELECT COUNT(DISTINCT a, b + 0) FROM t1;
|
|
COUNT(DISTINCT a, b + 0)
|
|
32
|
|
EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT b) < 20;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index NULL a 10 NULL 32 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT a)` from `test`.`t1` having (count(distinct `test`.`t1`.`b`) < 20)
|
|
SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT b) < 20;
|
|
COUNT(DISTINCT a)
|
|
4
|
|
EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT c) < 10;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 32 100.00 NULL
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT a)` from `test`.`t1` having (count(distinct `test`.`t1`.`c`) < 10)
|
|
SELECT COUNT(DISTINCT a) FROM t1 HAVING COUNT(DISTINCT c) < 10;
|
|
COUNT(DISTINCT a)
|
|
4
|
|
EXPLAIN SELECT 1 FROM t1 HAVING COUNT(DISTINCT a) < 10;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 5 NULL 9 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select 1 AS `1` from `test`.`t1` having (count(distinct `test`.`t1`.`a`) < 10)
|
|
SELECT 1 FROM t1 HAVING COUNT(DISTINCT a) < 10;
|
|
1
|
|
1
|
|
EXPLAIN SELECT 1 FROM t1 GROUP BY a HAVING COUNT(DISTINCT b) > 1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 10 NULL 17 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select 1 AS `1` from `test`.`t1` group by `test`.`t1`.`a` having (count(distinct `test`.`t1`.`b`) > 1)
|
|
SELECT 1 FROM t1 GROUP BY a HAVING COUNT(DISTINCT b) > 1;
|
|
1
|
|
1
|
|
1
|
|
1
|
|
1
|
|
EXPLAIN SELECT COUNT(DISTINCT t1_1.a) FROM t1 t1_1, t1 t1_2 GROUP BY t1_1.a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1_1 NULL index a a 10 NULL 32 100.00 Using index; Using temporary; Using filesort
|
|
1 SIMPLE t1_2 NULL index NULL a 10 NULL 32 100.00 Using index; Using join buffer (Block Nested Loop)
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1_1`.`a`) AS `COUNT(DISTINCT t1_1.a)` from `test`.`t1` `t1_1` join `test`.`t1` `t1_2` group by `test`.`t1_1`.`a`
|
|
SELECT COUNT(DISTINCT t1_1.a) FROM t1 t1_1, t1 t1_2 GROUP BY t1_1.a;
|
|
COUNT(DISTINCT t1_1.a)
|
|
1
|
|
1
|
|
1
|
|
1
|
|
EXPLAIN SELECT COUNT(DISTINCT a), 12 FROM t1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 5 NULL 9 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT a)`,12 AS `12` from `test`.`t1`
|
|
SELECT COUNT(DISTINCT a), 12 FROM t1;
|
|
COUNT(DISTINCT a) 12
|
|
4 12
|
|
EXPLAIN SELECT COUNT(DISTINCT a, b, c) FROM t2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range a a 15 NULL 17 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`a`,`test`.`t2`.`b`,`test`.`t2`.`c`) AS `COUNT(DISTINCT a, b, c)` from `test`.`t2`
|
|
SELECT COUNT(DISTINCT a, b, c) FROM t2;
|
|
COUNT(DISTINCT a, b, c)
|
|
32
|
|
EXPLAIN SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT a) FROM t2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range a a 5 NULL 5 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`a`) AS `COUNT(DISTINCT a)`,sum(distinct `test`.`t2`.`a`) AS `SUM(DISTINCT a)`,avg(distinct `test`.`t2`.`a`) AS `AVG(DISTINCT a)` from `test`.`t2`
|
|
SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT a) FROM t2;
|
|
COUNT(DISTINCT a) SUM(DISTINCT a) AVG(DISTINCT a)
|
|
4 10 2.5000
|
|
EXPLAIN SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT f) FROM t2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 32 100.00 NULL
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`a`) AS `COUNT(DISTINCT a)`,sum(distinct `test`.`t2`.`a`) AS `SUM(DISTINCT a)`,avg(distinct `test`.`t2`.`f`) AS `AVG(DISTINCT f)` from `test`.`t2`
|
|
SELECT COUNT(DISTINCT a), SUM(DISTINCT a), AVG(DISTINCT f) FROM t2;
|
|
COUNT(DISTINCT a) SUM(DISTINCT a) AVG(DISTINCT f)
|
|
4 10 1.0000
|
|
EXPLAIN SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, a) FROM t2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range a a 10 NULL 9 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`a`,`test`.`t2`.`b`) AS `COUNT(DISTINCT a, b)`,count(distinct `test`.`t2`.`b`,`test`.`t2`.`a`) AS `COUNT(DISTINCT b, a)` from `test`.`t2`
|
|
SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, a) FROM t2;
|
|
COUNT(DISTINCT a, b) COUNT(DISTINCT b, a)
|
|
32 32
|
|
EXPLAIN SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, f) FROM t2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 32 100.00 NULL
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`a`,`test`.`t2`.`b`) AS `COUNT(DISTINCT a, b)`,count(distinct `test`.`t2`.`b`,`test`.`t2`.`f`) AS `COUNT(DISTINCT b, f)` from `test`.`t2`
|
|
SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, f) FROM t2;
|
|
COUNT(DISTINCT a, b) COUNT(DISTINCT b, f)
|
|
32 16
|
|
EXPLAIN SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, d) FROM t2;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 32 100.00 NULL
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`a`,`test`.`t2`.`b`) AS `COUNT(DISTINCT a, b)`,count(distinct `test`.`t2`.`b`,`test`.`t2`.`d`) AS `COUNT(DISTINCT b, d)` from `test`.`t2`
|
|
SELECT COUNT(DISTINCT a, b), COUNT(DISTINCT b, d) FROM t2;
|
|
COUNT(DISTINCT a, b) COUNT(DISTINCT b, d)
|
|
32 16
|
|
EXPLAIN SELECT a, c, COUNT(DISTINCT c, a, b) FROM t2 GROUP BY a, b, c;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range a a 15 NULL 17 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`c` AS `c`,count(distinct `test`.`t2`.`c`,`test`.`t2`.`a`,`test`.`t2`.`b`) AS `COUNT(DISTINCT c, a, b)` from `test`.`t2` group by `test`.`t2`.`a`,`test`.`t2`.`b`,`test`.`t2`.`c`
|
|
SELECT a, c, COUNT(DISTINCT c, a, b) FROM t2 GROUP BY a, b, c;
|
|
a c COUNT(DISTINCT c, a, b)
|
|
1 1 1
|
|
1 1 1
|
|
1 1 1
|
|
1 1 1
|
|
1 1 1
|
|
1 1 1
|
|
1 1 1
|
|
1 1 1
|
|
2 1 1
|
|
2 1 1
|
|
2 1 1
|
|
2 1 1
|
|
2 1 1
|
|
2 1 1
|
|
2 1 1
|
|
2 1 1
|
|
3 1 1
|
|
3 1 1
|
|
3 1 1
|
|
3 1 1
|
|
3 1 1
|
|
3 1 1
|
|
3 1 1
|
|
3 1 1
|
|
4 1 1
|
|
4 1 1
|
|
4 1 1
|
|
4 1 1
|
|
4 1 1
|
|
4 1 1
|
|
4 1 1
|
|
4 1 1
|
|
EXPLAIN SELECT COUNT(DISTINCT c, a, b) FROM t2
|
|
WHERE a > 5 AND b BETWEEN 10 AND 20 GROUP BY a, b, c;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range a a 5 NULL 1 11.11 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`c`,`test`.`t2`.`a`,`test`.`t2`.`b`) AS `COUNT(DISTINCT c, a, b)` from `test`.`t2` where ((`test`.`t2`.`a` > 5) and (`test`.`t2`.`b` between 10 and 20)) group by `test`.`t2`.`a`,`test`.`t2`.`b`,`test`.`t2`.`c`
|
|
SELECT COUNT(DISTINCT c, a, b) FROM t2
|
|
WHERE a > 5 AND b BETWEEN 10 AND 20 GROUP BY a, b, c;
|
|
COUNT(DISTINCT c, a, b)
|
|
EXPLAIN SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 WHERE a = 5
|
|
GROUP BY b;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL ref a a 5 const 1 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`b`) AS `COUNT(DISTINCT b)`,sum(distinct `test`.`t2`.`b`) AS `SUM(DISTINCT b)` from `test`.`t2` where (`test`.`t2`.`a` = 5) group by `test`.`t2`.`b`
|
|
SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 WHERE a = 5
|
|
GROUP BY b;
|
|
COUNT(DISTINCT b) SUM(DISTINCT b)
|
|
EXPLAIN SELECT a, COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range a a 10 NULL 9 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,count(distinct `test`.`t2`.`b`) AS `COUNT(DISTINCT b)`,sum(distinct `test`.`t2`.`b`) AS `SUM(DISTINCT b)` from `test`.`t2` group by `test`.`t2`.`a`
|
|
SELECT a, COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
|
|
a COUNT(DISTINCT b) SUM(DISTINCT b)
|
|
1 8 36
|
|
2 8 36
|
|
3 8 100
|
|
4 8 100
|
|
EXPLAIN SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range a a 10 NULL 9 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`b`) AS `COUNT(DISTINCT b)`,sum(distinct `test`.`t2`.`b`) AS `SUM(DISTINCT b)` from `test`.`t2` group by `test`.`t2`.`a`
|
|
SELECT COUNT(DISTINCT b), SUM(DISTINCT b) FROM t2 GROUP BY a;
|
|
COUNT(DISTINCT b) SUM(DISTINCT b)
|
|
8 36
|
|
8 36
|
|
8 100
|
|
8 100
|
|
EXPLAIN SELECT COUNT(DISTINCT a, b) FROM t2 WHERE c = 13 AND d = 42;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL ALL a NULL NULL NULL 32 3.12 Using where
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`a`,`test`.`t2`.`b`) AS `COUNT(DISTINCT a, b)` from `test`.`t2` where ((`test`.`t2`.`d` = 42) and (`test`.`t2`.`c` = 13))
|
|
SELECT COUNT(DISTINCT a, b) FROM t2 WHERE c = 13 AND d = 42;
|
|
COUNT(DISTINCT a, b)
|
|
0
|
|
EXPLAIN SELECT a, COUNT(DISTINCT a), SUM(DISTINCT a) FROM t2
|
|
WHERE b = 13 AND c = 42 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range a a 15 NULL 5 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,count(distinct `test`.`t2`.`a`) AS `COUNT(DISTINCT a)`,sum(distinct `test`.`t2`.`a`) AS `SUM(DISTINCT a)` from `test`.`t2` where ((`test`.`t2`.`c` = 42) and (`test`.`t2`.`b` = 13)) group by `test`.`t2`.`a`
|
|
SELECT a, COUNT(DISTINCT a), SUM(DISTINCT a) FROM t2
|
|
WHERE b = 13 AND c = 42 GROUP BY a;
|
|
a COUNT(DISTINCT a) SUM(DISTINCT a)
|
|
# This query could have been resolved using loose index scan since
|
|
# the second part of count(..) is defined by a constant predicate
|
|
EXPLAIN SELECT COUNT(DISTINCT a, b), SUM(DISTINCT a) FROM t2 WHERE b = 42;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index NULL a 15 NULL 32 10.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select count(distinct `test`.`t2`.`a`,`test`.`t2`.`b`) AS `COUNT(DISTINCT a, b)`,sum(distinct `test`.`t2`.`a`) AS `SUM(DISTINCT a)` from `test`.`t2` where (`test`.`t2`.`b` = 42)
|
|
SELECT COUNT(DISTINCT a, b), SUM(DISTINCT a) FROM t2 WHERE b = 42;
|
|
COUNT(DISTINCT a, b) SUM(DISTINCT a)
|
|
0 NULL
|
|
EXPLAIN SELECT SUM(DISTINCT a), MAX(b) FROM t2 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index a a 15 NULL 32 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select sum(distinct `test`.`t2`.`a`) AS `SUM(DISTINCT a)`,max(`test`.`t2`.`b`) AS `MAX(b)` from `test`.`t2` group by `test`.`t2`.`a`
|
|
SELECT SUM(DISTINCT a), MAX(b) FROM t2 GROUP BY a;
|
|
SUM(DISTINCT a) MAX(b)
|
|
1 8
|
|
2 8
|
|
3 16
|
|
4 16
|
|
EXPLAIN SELECT 42 * (a + c + COUNT(DISTINCT c, a, b)) FROM t2 GROUP BY a, b, c;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL range a a 15 NULL 17 100.00 Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select (42 * ((`test`.`t2`.`a` + `test`.`t2`.`c`) + count(distinct `test`.`t2`.`c`,`test`.`t2`.`a`,`test`.`t2`.`b`))) AS `42 * (a + c + COUNT(DISTINCT c, a, b))` from `test`.`t2` group by `test`.`t2`.`a`,`test`.`t2`.`b`,`test`.`t2`.`c`
|
|
SELECT 42 * (a + c + COUNT(DISTINCT c, a, b)) FROM t2 GROUP BY a, b, c;
|
|
42 * (a + c + COUNT(DISTINCT c, a, b))
|
|
126
|
|
126
|
|
126
|
|
126
|
|
126
|
|
126
|
|
126
|
|
126
|
|
168
|
|
168
|
|
168
|
|
168
|
|
168
|
|
168
|
|
168
|
|
168
|
|
210
|
|
210
|
|
210
|
|
210
|
|
210
|
|
210
|
|
210
|
|
210
|
|
252
|
|
252
|
|
252
|
|
252
|
|
252
|
|
252
|
|
252
|
|
252
|
|
EXPLAIN SELECT (SUM(DISTINCT a) + MAX(b)) FROM t2 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t2 NULL index a a 15 NULL 32 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select (sum(distinct `test`.`t2`.`a`) + max(`test`.`t2`.`b`)) AS `(SUM(DISTINCT a) + MAX(b))` from `test`.`t2` group by `test`.`t2`.`a`
|
|
SELECT (SUM(DISTINCT a) + MAX(b)) FROM t2 GROUP BY a;
|
|
(SUM(DISTINCT a) + MAX(b))
|
|
9
|
|
10
|
|
19
|
|
20
|
|
DROP TABLE t1,t2;
|
|
# end of WL#3220 tests
|
|
#
|
|
# Bug#50539: Wrong result when loose index scan is used for an aggregate
|
|
# function with distinct
|
|
#
|
|
CREATE TABLE t1 (
|
|
f1 int(11) NOT NULL DEFAULT '0',
|
|
f2 char(1) NOT NULL DEFAULT '',
|
|
PRIMARY KEY (f1,f2)
|
|
) charset utf8mb4;
|
|
Warnings:
|
|
Warning 1681 Integer display width is deprecated and will be removed in a future release.
|
|
insert into t1 values(1,'A'),(1 , 'B'), (1, 'C'), (2, 'A'),
|
|
(3, 'A'), (3, 'B'), (3, 'C'), (3, 'D');
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
SELECT f1, COUNT(DISTINCT f2) FROM t1 GROUP BY f1;
|
|
f1 COUNT(DISTINCT f2)
|
|
1 3
|
|
2 1
|
|
3 4
|
|
explain SELECT f1, COUNT(DISTINCT f2) FROM t1 GROUP BY f1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL index PRIMARY PRIMARY 8 NULL 8 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`f1` AS `f1`,count(distinct `test`.`t1`.`f2`) AS `COUNT(DISTINCT f2)` from `test`.`t1` group by `test`.`t1`.`f1`
|
|
drop table t1;
|
|
# End of test#50539.
|
|
CREATE TABLE t1 (
|
|
a INTEGER,
|
|
b INTEGER,
|
|
c INTEGER,
|
|
d INTEGER,
|
|
KEY foo (a,b,c,d)
|
|
);
|
|
INSERT INTO t1 VALUES (1, 1, 1, 1), (1, 2, 1, 2), (1, 3, 1, 3), (1, 4, 1, 4);
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
EXPLAIN SELECT DISTINCT a FROM t1 WHERE b=4;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range foo foo 10 NULL 129 100.00 Using where; Using index for group-by
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`b` = 4)
|
|
SELECT DISTINCT a FROM t1 WHERE b=4;
|
|
a
|
|
1
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug#17217128 - BAD INTERACTION BETWEEN MIN/MAX AND
|
|
# "HAVING SUM(DISTINCT)": WRONG RESULTS.
|
|
#
|
|
CREATE TABLE t (a INT, b INT, KEY(a,b));
|
|
INSERT INTO t VALUES (1,1), (2,2), (3,3), (4,4), (1,0), (3,2), (4,5);
|
|
set optimizer_trace_max_mem_size=1048576;
|
|
set @@session.optimizer_trace='enabled=on';
|
|
set end_markers_in_json=on;
|
|
ANALYZE TABLE t;
|
|
Table Op Msg_type Msg_text
|
|
test.t analyze status OK
|
|
SELECT a, SUM(DISTINCT a), MIN(b) FROM t GROUP BY a;
|
|
a SUM(DISTINCT a) MIN(b)
|
|
1 1 0
|
|
2 2 2
|
|
3 3 2
|
|
4 4 4
|
|
EXPLAIN SELECT a, SUM(DISTINCT a), MIN(b) FROM t GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t NULL index a a 10 NULL 7 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t`.`a` AS `a`,sum(distinct `test`.`t`.`a`) AS `SUM(DISTINCT a)`,min(`test`.`t`.`b`) AS `MIN(b)` from `test`.`t` group by `test`.`t`.`a`
|
|
SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
SELECT a, SUM(DISTINCT a), MAX(b) FROM t GROUP BY a;
|
|
a SUM(DISTINCT a) MAX(b)
|
|
1 1 1
|
|
2 2 2
|
|
3 3 3
|
|
4 4 5
|
|
EXPLAIN SELECT a, SUM(DISTINCT a), MAX(b) FROM t GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t NULL index a a 10 NULL 7 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t`.`a` AS `a`,sum(distinct `test`.`t`.`a`) AS `SUM(DISTINCT a)`,max(`test`.`t`.`b`) AS `MAX(b)` from `test`.`t` group by `test`.`t`.`a`
|
|
SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
SELECT a, MAX(b) FROM t GROUP BY a HAVING SUM(DISTINCT a);
|
|
a MAX(b)
|
|
1 1
|
|
2 2
|
|
3 3
|
|
4 5
|
|
EXPLAIN SELECT a, MAX(b) FROM t GROUP BY a HAVING SUM(DISTINCT a);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t NULL index a a 10 NULL 7 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t`.`a` AS `a`,max(`test`.`t`.`b`) AS `MAX(b)` from `test`.`t` group by `test`.`t`.`a` having (0 <> sum(distinct `test`.`t`.`a`))
|
|
SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
SELECT SUM(DISTINCT a), MIN(b), MAX(b) FROM t;
|
|
SUM(DISTINCT a) MIN(b) MAX(b)
|
|
10 0 5
|
|
EXPLAIN SELECT SUM(DISTINCT a), MIN(b), MAX(b) FROM t;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t NULL index a a 10 NULL 7 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select sum(distinct `test`.`t`.`a`) AS `SUM(DISTINCT a)`,min(`test`.`t`.`b`) AS `MIN(b)`,max(`test`.`t`.`b`) AS `MAX(b)` from `test`.`t`
|
|
SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
SELECT a, SUM(DISTINCT a), MIN(b), MAX(b) FROM t GROUP BY a;
|
|
a SUM(DISTINCT a) MIN(b) MAX(b)
|
|
1 1 0 1
|
|
2 2 2 2
|
|
3 3 2 3
|
|
4 4 4 5
|
|
EXPLAIN SELECT a, SUM(DISTINCT a), MIN(b), MAX(b) FROM t GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t NULL index a a 10 NULL 7 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t`.`a` AS `a`,sum(distinct `test`.`t`.`a`) AS `SUM(DISTINCT a)`,min(`test`.`t`.`b`) AS `MIN(b)`,max(`test`.`t`.`b`) AS `MAX(b)` from `test`.`t` group by `test`.`t`.`a`
|
|
SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
SET optimizer_trace_max_mem_size=DEFAULT;
|
|
SET optimizer_trace=DEFAULT;
|
|
SET end_markers_in_json=DEFAULT;
|
|
DROP TABLE t;
|
|
#
|
|
# Bug#18109609: LOOSE INDEX SCAN IS NOT USED WHEN IT SHOULD
|
|
#
|
|
CREATE TABLE t1 (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
c1 INT,
|
|
c2 INT,
|
|
KEY(c1,c2));
|
|
INSERT INTO t1(c1,c2) VALUES
|
|
(1, 1), (1,2), (2,1), (2,2), (3,1), (3,2), (3,3), (4,1), (4,2), (4,3),
|
|
(4,4), (4,5), (4,6), (4,7), (4,8), (4,9), (4,10), (4,11), (4,12), (4,13),
|
|
(4,14), (4,15), (4,16), (4,17), (4,18), (4,19), (4,20),(5,5);
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
EXPLAIN SELECT MAX(c2), c1 FROM t1 WHERE c1 = 4 GROUP BY c1;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL ref c1 c1 5 const 1 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select max(`test`.`t1`.`c2`) AS `MAX(c2)`,`test`.`t1`.`c1` AS `c1` from `test`.`t1` where (`test`.`t1`.`c1` = 4) group by `test`.`t1`.`c1`
|
|
FLUSH STATUS;
|
|
SELECT MAX(c2), c1 FROM t1 WHERE c1 = 4 GROUP BY c1;
|
|
MAX(c2) c1
|
|
20 4
|
|
SHOW SESSION STATUS LIKE 'Handler_read%';
|
|
Variable_name Value
|
|
Handler_read_first 0
|
|
Handler_read_key 1
|
|
Handler_read_last 0
|
|
Handler_read_next 20
|
|
Handler_read_prev 0
|
|
Handler_read_rnd 0
|
|
Handler_read_rnd_next 0
|
|
DROP TABLE t1;
|
|
# End of test for Bug#18109609
|
|
#
|
|
# Bug#22661012 - "USING INDEX FOR GROUP-BY" QUERIES CAN RETURN
|
|
# NO DATA WITH LE/LEQ AND ROUNDING
|
|
#
|
|
CREATE TABLE t1 (a INT, b INT, KEY(a,b));
|
|
INSERT INTO t1 VALUES (1,1000), (1,1001), (1,2000),
|
|
(1,2001), (1,3000), (1,3002);
|
|
ANALYZE TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a = 1 AND b < 1999.5 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 10 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,max(`test`.`t1`.`b`) AS `MAX(b)` from `test`.`t1` where ((`test`.`t1`.`a` = 1) and (`test`.`t1`.`b` < 2000)) group by `test`.`t1`.`a`
|
|
SELECT a, MAX(b) FROM t1 WHERE a = 1 AND b < 1999.5 GROUP BY a;
|
|
a MAX(b)
|
|
1 1001
|
|
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a = 1 AND b <= 1999.5 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 10 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,max(`test`.`t1`.`b`) AS `MAX(b)` from `test`.`t1` where ((`test`.`t1`.`a` = 1) and (`test`.`t1`.`b` < 2000)) group by `test`.`t1`.`a`
|
|
SELECT a, MAX(b) FROM t1 WHERE a = 1 AND b <= 1999.5 GROUP BY a;
|
|
a MAX(b)
|
|
1 1001
|
|
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a = 1 AND b between 0 and 1999.5
|
|
GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 10 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,max(`test`.`t1`.`b`) AS `MAX(b)` from `test`.`t1` where ((`test`.`t1`.`a` = 1) and (`test`.`t1`.`b` between 0 and 1999.5)) group by `test`.`t1`.`a`
|
|
SELECT a, MAX(b) FROM t1 WHERE a = 1 AND b between 0 and 1999.5
|
|
GROUP BY a;
|
|
a MAX(b)
|
|
1 1001
|
|
EXPLAIN SELECT a, MIN(b) FROM t1 WHERE a = 1 AND b > 2000.1 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 10 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,min(`test`.`t1`.`b`) AS `MIN(b)` from `test`.`t1` where ((`test`.`t1`.`a` = 1) and (`test`.`t1`.`b` > 2000)) group by `test`.`t1`.`a`
|
|
SELECT a, MIN(b) FROM t1 WHERE a = 1 AND b > 2000.1 GROUP BY a;
|
|
a MIN(b)
|
|
1 2001
|
|
EXPLAIN SELECT a, MIN(b) FROM t1 WHERE a = 1 AND b >= 2000.1 GROUP BY a;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE t1 NULL range a a 10 NULL 1 100.00 Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,min(`test`.`t1`.`b`) AS `MIN(b)` from `test`.`t1` where ((`test`.`t1`.`a` = 1) and (`test`.`t1`.`b` > 2000)) group by `test`.`t1`.`a`
|
|
SELECT a, MIN(b) FROM t1 WHERE a = 1 AND b >= 2000.1 GROUP BY a;
|
|
a MIN(b)
|
|
1 2001
|
|
DROP TABLE t1;
|
|
# End of test for Bug#22661012
|
|
#
|
|
# Bug#24484060 INCORRECT EVALUATION OF MIN/MAX REFERRING
|
|
# TO AN OUTER QUERY BLOCK
|
|
#
|
|
CREATE TABLE t1 (pk INT PRIMARY KEY, nk INT, k INT UNIQUE);
|
|
INSERT INTO t1 VALUES (1,1,1),(2,2,2),(4,4,4);
|
|
CREATE TABLE t2 (k INT);
|
|
INSERT INTO t2 VALUES (1),(2),(4);
|
|
ANALYZE TABLE t1, t2;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
test.t2 analyze status OK
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk<>3 AND out1.nk = (SELECT MAX(out1.k) FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY out1 NULL range PRIMARY,k PRIMARY 4 NULL 2 100.00 Using where
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using join buffer (Block Nested Loop)
|
|
2 DEPENDENT SUBQUERY t1 NULL index NULL k 5 NULL 3 100.00 Using index
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.out1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`t2`.`k` = `test`.`out1`.`k`) and (`test`.`out1`.`pk` <> 3) and (`test`.`out1`.`nk` = (/* select#2 */ select max(`test`.`out1`.`k`) from `test`.`t1`)))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk<>3 AND out1.nk = (SELECT MAX(out1.k) FROM t1);
|
|
k
|
|
1
|
|
2
|
|
4
|
|
# Repeat the test with PRIMARY KEY instead of the non-indexed column.
|
|
ALTER TABLE t1 DROP COLUMN nk;
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT MAX(out1.k) FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 100.00 Using where
|
|
1 PRIMARY out1 NULL eq_ref k k 5 test.t2.k 1 100.00 Using where
|
|
2 DEPENDENT SUBQUERY t1 NULL index NULL k 5 NULL 3 100.00 Using index
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.out1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`out1`.`k` = `test`.`t2`.`k`) and (`test`.`out1`.`pk` = (/* select#2 */ select max(`test`.`out1`.`k`) from `test`.`t1`)))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT MAX(out1.k) FROM t1);
|
|
k
|
|
1
|
|
2
|
|
4
|
|
# Inner reference should be optimized.
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT MAX(k) FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY out1 NULL const PRIMARY,k PRIMARY 4 const 1 100.00 NULL
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 33.33 Using where
|
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`t2`.`k` = '4'))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT MAX(k) FROM t1);
|
|
k
|
|
4
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT 2*MIN(k) FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY out1 NULL const PRIMARY,k PRIMARY 4 const 1 100.00 NULL
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 33.33 Using where
|
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`t2`.`k` = '2'))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT 2*MIN(k) FROM t1);
|
|
k
|
|
2
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT SUM(k) - COUNT(k) FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY out1 NULL const PRIMARY,k PRIMARY 4 const 1 100.00 NULL
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 33.33 Using where
|
|
2 SUBQUERY t1 NULL index NULL k 5 NULL 3 100.00 Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`t2`.`k` = '4') and ('4' = (/* select#2 */ select (sum(`test`.`t1`.`k`) - count(`test`.`t1`.`k`)) from `test`.`t1`)))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT SUM(k) - COUNT(k) FROM t1);
|
|
k
|
|
4
|
|
# Combinations of outer and inner references should not be optimized.
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT MIN(out1.k + k) - 1 FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 100.00 Using where
|
|
1 PRIMARY out1 NULL eq_ref k k 5 test.t2.k 1 100.00 Using where
|
|
2 DEPENDENT SUBQUERY t1 NULL index NULL k 5 NULL 3 100.00 Using index
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.out1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`out1`.`k` = `test`.`t2`.`k`) and (`test`.`out1`.`pk` = (/* select#2 */ select (min((`test`.`out1`.`k` + `test`.`t1`.`k`)) - 1) from `test`.`t1`)))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT MIN(out1.k + k) - 1 FROM t1);
|
|
k
|
|
1
|
|
2
|
|
4
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT out1.k + MIN(k) - 1 FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 100.00 Using where
|
|
1 PRIMARY out1 NULL eq_ref k k 5 test.t2.k 1 100.00 Using where
|
|
2 DEPENDENT SUBQUERY t1 NULL index NULL k 5 NULL 3 100.00 Using index
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.out1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`out1`.`k` = `test`.`t2`.`k`) and (`test`.`out1`.`pk` = (/* select#2 */ select ((`test`.`out1`.`k` + min(`test`.`t1`.`k`)) - 1) from `test`.`t1`)))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT out1.k + MIN(k) - 1 FROM t1);
|
|
k
|
|
1
|
|
2
|
|
4
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT MIN(out1.k) + MIN(k) - 1 FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 100.00 Using where
|
|
1 PRIMARY out1 NULL eq_ref k k 5 test.t2.k 1 100.00 Using where
|
|
2 DEPENDENT SUBQUERY t1 NULL index NULL k 5 NULL 3 100.00 Using index
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.out1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`out1`.`k` = `test`.`t2`.`k`) and (`test`.`out1`.`pk` = (/* select#2 */ select ((min(`test`.`out1`.`k`) + min(`test`.`t1`.`k`)) - 1) from `test`.`t1`)))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT MIN(out1.k) + MIN(k) - 1 FROM t1);
|
|
k
|
|
1
|
|
2
|
|
4
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT SUM(out1.k) / COUNT(k) FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 100.00 Using where
|
|
1 PRIMARY out1 NULL eq_ref k k 5 test.t2.k 1 100.00 Using where
|
|
2 DEPENDENT SUBQUERY t1 NULL index NULL k 5 NULL 3 100.00 Using index
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.out1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`out1`.`k` = `test`.`t2`.`k`) and (`test`.`out1`.`pk` = (/* select#2 */ select (sum(`test`.`out1`.`k`) / count(`test`.`t1`.`k`)) from `test`.`t1`)))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT SUM(out1.k) / COUNT(k) FROM t1);
|
|
k
|
|
1
|
|
2
|
|
4
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT SUM(out1.k) / COUNT(*) FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 100.00 Using where
|
|
1 PRIMARY out1 NULL eq_ref k k 5 test.t2.k 1 100.00 Using where
|
|
2 DEPENDENT SUBQUERY t1 NULL index NULL k 5 NULL 3 100.00 Using index
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.out1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`out1`.`k` = `test`.`t2`.`k`) and (`test`.`out1`.`pk` = (/* select#2 */ select (sum(`test`.`out1`.`k`) / count(0)) from `test`.`t1`)))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT SUM(out1.k) / COUNT(*) FROM t1);
|
|
k
|
|
1
|
|
2
|
|
4
|
|
explain SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT AVG(out1.k) FROM t1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t2 NULL ALL NULL NULL NULL NULL 3 100.00 Using where
|
|
1 PRIMARY out1 NULL eq_ref k k 5 test.t2.k 1 100.00 Using where
|
|
2 DEPENDENT SUBQUERY t1 NULL index NULL k 5 NULL 3 100.00 Using index
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.out1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select `test`.`t2`.`k` AS `k` from `test`.`t1` `out1` join `test`.`t2` where ((`test`.`out1`.`k` = `test`.`t2`.`k`) and (`test`.`out1`.`pk` = (/* select#2 */ select avg(`test`.`out1`.`k`) from `test`.`t1`)))
|
|
SELECT t2.k FROM t1 out1, t2 WHERE t2.k = out1.k
|
|
AND out1.pk = (SELECT AVG(out1.k) FROM t1);
|
|
k
|
|
1
|
|
2
|
|
4
|
|
DROP TABLE t1, t2;
|
|
# End of test for Bug#24484060
|
|
#
|
|
# Bug#24657798 HANDLER::HA_INDEX_INIT() TRIES TO USE
|
|
# AN UNLOCKED CONST TABLE IN OPT_SUM_QUERY()
|
|
#
|
|
CREATE TABLE t1 (k INT, KEY(k)) ENGINE=MyISAM;
|
|
INSERT INTO t1 VALUES (1);
|
|
CREATE TABLE t2 (h INT) ENGINE=MyISAM;
|
|
INSERT INTO t2 VALUES (3);
|
|
explain SELECT * FROM t1 WHERE (SELECT MIN(t1.k) FROM t2);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
2 DEPENDENT SUBQUERY t2 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '1' AS `k` from dual where true
|
|
SELECT * FROM t1 WHERE (SELECT MIN(t1.k) FROM t2);
|
|
k
|
|
1
|
|
explain SELECT * FROM t1 WHERE EXISTS (SELECT MIN(t1.k) FROM t1 s1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
2 DEPENDENT SUBQUERY s1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '1' AS `k` from dual where true
|
|
SELECT * FROM t1 WHERE EXISTS (SELECT MIN(t1.k) FROM t1 s1);
|
|
k
|
|
1
|
|
explain SELECT * FROM t1 WHERE EXISTS (SELECT MIN(t1.k) FROM t2);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
2 DEPENDENT SUBQUERY t2 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '1' AS `k` from dual where true
|
|
SELECT * FROM t1 WHERE EXISTS (SELECT MIN(t1.k) FROM t2);
|
|
k
|
|
1
|
|
UPDATE t1 SET k=0;
|
|
explain SELECT * FROM t1 WHERE (SELECT MIN(t1.k) FROM t2);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
2 DEPENDENT SUBQUERY t2 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '0' AS `k` from dual where (0 <> (/* select#2 */ select min('0') from dual))
|
|
SELECT * FROM t1 WHERE (SELECT MIN(t1.k) FROM t2);
|
|
k
|
|
explain SELECT * FROM t1 WHERE EXISTS (SELECT MIN(t1.k) FROM t1 s1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
2 DEPENDENT SUBQUERY s1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '0' AS `k` from dual where true
|
|
SELECT * FROM t1 WHERE EXISTS (SELECT MIN(t1.k) FROM t1 s1);
|
|
k
|
|
0
|
|
explain SELECT * FROM t1 WHERE EXISTS (SELECT MIN(t1.k) FROM t2);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
2 DEPENDENT SUBQUERY t2 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '0' AS `k` from dual where true
|
|
SELECT * FROM t1 WHERE EXISTS (SELECT MIN(t1.k) FROM t2);
|
|
k
|
|
0
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (nk INT, k INT, KEY(k)) ENGINE=MyISAM;
|
|
INSERT INTO t1 VALUES (1,1);
|
|
explain SELECT * FROM t1 WHERE nk = (SELECT MIN(t1.k) FROM t1 s1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
2 DEPENDENT SUBQUERY s1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '1' AS `nk`,'1' AS `k` from dual where true
|
|
SELECT * FROM t1 WHERE nk = (SELECT MIN(t1.k) FROM t1 s1);
|
|
nk k
|
|
1 1
|
|
explain SELECT * FROM t1 WHERE nk = (SELECT MIN(t1.k) FROM t2);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
2 DEPENDENT SUBQUERY t2 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '1' AS `nk`,'1' AS `k` from dual where true
|
|
SELECT * FROM t1 WHERE nk = (SELECT MIN(t1.k) FROM t2);
|
|
nk k
|
|
1 1
|
|
UPDATE t1 SET nk=0, k=0;
|
|
explain SELECT * FROM t1 WHERE nk = (SELECT MIN(t1.k) FROM t1 s1);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
2 DEPENDENT SUBQUERY s1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '0' AS `nk`,'0' AS `k` from dual where true
|
|
SELECT * FROM t1 WHERE nk = (SELECT MIN(t1.k) FROM t1 s1);
|
|
nk k
|
|
0 0
|
|
explain SELECT * FROM t1 WHERE nk = (SELECT MIN(t1.k) FROM t2);
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
2 DEPENDENT SUBQUERY t2 NULL system NULL NULL NULL NULL 1 100.00 NULL
|
|
Warnings:
|
|
Note 1276 Field or reference 'test.t1.k' of SELECT #2 was resolved in SELECT #1
|
|
Note 1003 /* select#1 */ select '0' AS `nk`,'0' AS `k` from dual where true
|
|
SELECT * FROM t1 WHERE nk = (SELECT MIN(t1.k) FROM t2);
|
|
nk k
|
|
0 0
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
# End of test for Bug#24657798
|
|
#
|
|
# Bug#24423143 - WRONG RESULTS FOR AGGREGATE QUERY
|
|
#
|
|
# Test index merge tree scenario
|
|
CREATE TABLE a (
|
|
aggr_col int,
|
|
group_by_col int,
|
|
KEY aggr_col_key (aggr_col),
|
|
KEY group_by_col_key (group_by_col, aggr_col)
|
|
) ENGINE=XENGINE;
|
|
set optimizer_trace_max_mem_size=1048576;
|
|
set @@session.optimizer_trace='enabled=on';
|
|
set end_markers_in_json=on;
|
|
INSERT INTO a VALUES (2,3),(5,6),(6,3),(7,NULL),(9,NULL),(10,6);
|
|
ANALYZE TABLE a;
|
|
Table Op Msg_type Msg_text
|
|
test.a analyze status OK
|
|
SELECT group_by_col, MIN(aggr_col) FROM a
|
|
WHERE (group_by_col IN (70, 9)) OR (aggr_col > 2) GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col)
|
|
NULL 7
|
|
3 6
|
|
6 5
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col) FROM a
|
|
WHERE (group_by_col IN (70 ,9)) OR (aggr_col > 2) GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index aggr_col_key,group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)` from `test`.`a` where ((`test`.`a`.`group_by_col` in (70,9)) or (`test`.`a`.`aggr_col` > 2)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'disjuntive_predicate_present' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
SELECT group_by_col, MAX(aggr_col) FROM a
|
|
WHERE (group_by_col IN (70, 9)) OR (aggr_col < 9) GROUP BY group_by_col;
|
|
group_by_col MAX(aggr_col)
|
|
NULL 7
|
|
3 6
|
|
6 5
|
|
EXPLAIN SELECT group_by_col, MAX(aggr_col) FROM a
|
|
WHERE (group_by_col IN (70 , 9)) OR (aggr_col < 9) GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index aggr_col_key,group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((`test`.`a`.`group_by_col` in (70,9)) or (`test`.`a`.`aggr_col` < 9)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'disjuntive_predicate_present' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Test IMPOSSIBLE TREE scenario
|
|
ALTER TABLE a DROP KEY aggr_col_key;
|
|
SELECT group_by_col, MIN(aggr_col) FROM a
|
|
WHERE (group_by_col IN (70 ,9)) OR (aggr_col > 2) GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col)
|
|
NULL 7
|
|
3 6
|
|
6 5
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col) FROM a
|
|
WHERE (group_by_col IN (70, 9)) OR (aggr_col > 2) GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)` from `test`.`a` where ((`test`.`a`.`group_by_col` in (70,9)) or (`test`.`a`.`aggr_col` > 2)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
SELECT group_by_col, MAX(aggr_col) FROM a
|
|
WHERE (group_by_col IN (70, 9)) OR (aggr_col < 9) GROUP BY group_by_col;
|
|
group_by_col MAX(aggr_col)
|
|
NULL 7
|
|
3 6
|
|
6 5
|
|
EXPLAIN SELECT group_by_col, MAX(aggr_col) FROM a
|
|
WHERE (group_by_col IN (70, 9)) OR (aggr_col < 9) GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((`test`.`a`.`group_by_col` in (70,9)) or (`test`.`a`.`aggr_col` < 9)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Scenario 3: aggregate field used as equal expression.
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE (group_by_col IN (3, 9)) OR (aggr_col = 9) GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
NULL 9 9
|
|
3 2 6
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE (group_by_col IN (3, 9)) OR (aggr_col = 9) GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((`test`.`a`.`group_by_col` in (3,9)) or (`test`.`a`.`aggr_col` = 9)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Scenario 4: non aggregate field used as equal expression.
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE (group_by_col = 3) OR (aggr_col > 8) GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
NULL 9 9
|
|
3 2 6
|
|
6 10 10
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE (group_by_col = 3) OR (aggr_col > 8) GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((`test`.`a`.`group_by_col` = 3) or (`test`.`a`.`aggr_col` > 8)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Scenario 5: aggregate field used as non-zero expression.
|
|
INSERT INTO a VALUES(0, 3);
|
|
INSERT INTO a VALUES(0, 9);
|
|
INSERT INTO a VALUES(8, 0);
|
|
ANALYZE TABLE a;
|
|
Table Op Msg_type Msg_text
|
|
test.a analyze status OK
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE (group_by_col = 9) OR aggr_col GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
NULL 7 9
|
|
0 8 8
|
|
3 2 6
|
|
6 5 10
|
|
9 0 0
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE group_by_col = 9 OR aggr_col GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((`test`.`a`.`group_by_col` = 9) or (0 <> `test`.`a`.`aggr_col`)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Scenario 6: non aggregate field used as non-zero expression.
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE group_by_col OR (aggr_col < 9) GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
NULL 7 7
|
|
0 8 8
|
|
3 0 6
|
|
6 5 10
|
|
9 0 0
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE group_by_col OR (aggr_col < 9) GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((0 <> `test`.`a`.`group_by_col`) or (`test`.`a`.`aggr_col` < 9)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Scenario 7: aggregate field used in equal exp without a CONST
|
|
INSERT INTO a VALUES(1,1),(1,2),(2,1);
|
|
ANALYZE TABLE a;
|
|
Table Op Msg_type Msg_text
|
|
test.a analyze status OK
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col = group_by_col GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
1 1 1
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col = group_by_col GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where (`test`.`a`.`group_by_col` = `test`.`a`.`aggr_col`) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Scenario 8: aggregate field used in a non-eq exp without a CONST
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col < group_by_col GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
2 1 1
|
|
3 0 2
|
|
6 5 5
|
|
9 0 0
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col < group_by_col GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where (`test`.`a`.`aggr_col` < `test`.`a`.`group_by_col`) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Scenario 8
|
|
INSERT INTO a VALUES(0,1),(1,0),(0,0);
|
|
ANALYZE TABLE a;
|
|
Table Op Msg_type Msg_text
|
|
test.a analyze status OK
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col OR group_by_col GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
NULL 7 9
|
|
0 1 8
|
|
1 0 2
|
|
2 1 1
|
|
3 0 6
|
|
6 5 10
|
|
9 0 0
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col OR group_by_col GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((0 <> `test`.`a`.`aggr_col`) or (0 <> `test`.`a`.`group_by_col`)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Scenario 9
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col AND group_by_col GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
1 1 2
|
|
2 1 1
|
|
3 2 6
|
|
6 5 10
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col AND group_by_col GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((0 <> `test`.`a`.`aggr_col`) and (0 <> `test`.`a`.`group_by_col`)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
# Scenario 10: Added for completion. This fix does not have an impact.
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col<>0 AND group_by_col<>0 GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
1 1 2
|
|
2 1 1
|
|
3 2 6
|
|
6 5 10
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE aggr_col<>0 AND group_by_col<>0 GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL range group_by_col_key group_by_col_key 5 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((`test`.`a`.`aggr_col` <> 0) and (`test`.`a`.`group_by_col` <> 0)) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
0
|
|
# Scenario 11: ITEM_FUNC as an argument of ITEM_FUNC
|
|
SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE group_by_col OR (group_by_col < (aggr_col = 1)) GROUP BY group_by_col;
|
|
group_by_col MIN(aggr_col) MAX(aggr_col)
|
|
0 1 1
|
|
1 0 2
|
|
2 1 1
|
|
3 0 6
|
|
6 5 10
|
|
9 0 0
|
|
EXPLAIN SELECT group_by_col, MIN(aggr_col), MAX(aggr_col) FROM a
|
|
WHERE group_by_col OR (group_by_col < (aggr_col = 1)) GROUP BY group_by_col;
|
|
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE a NULL index group_by_col_key group_by_col_key 10 NULL # # Using where; Using index
|
|
Warnings:
|
|
Note 1003 /* select#1 */ select `test`.`a`.`group_by_col` AS `group_by_col`,min(`test`.`a`.`aggr_col`) AS `MIN(aggr_col)`,max(`test`.`a`.`aggr_col`) AS `MAX(aggr_col)` from `test`.`a` where ((0 <> `test`.`a`.`group_by_col`) or (`test`.`a`.`group_by_col` < (`test`.`a`.`aggr_col` = 1))) group by `test`.`a`.`group_by_col`
|
|
SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' AS OK
|
|
FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
|
OK
|
|
1
|
|
SET optimizer_trace_max_mem_size=DEFAULT;
|
|
SET optimizer_trace=DEFAULT;
|
|
SET end_markers_in_json=DEFAULT;
|
|
DROP TABLE a;
|
|
# End of test for Bug#24423143
|