mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
0c835da803
- added join cache indication in EXPLAIN (Extra column). - prefer filesort over full scan over index for ORDER BY (because it's faster). - when switching from REF to RANGE because RANGE uses longer key turn off sort on the head table only as the resulting RANGE access is a candidate for join cache and we don't want to disable it by sorting on the first table only. mysql-test/r/archive_gis.result: bug #27531: join cache in EXPLAIN mysql-test/r/compress.result: bug #27531: - join cache in EXPLAIN. - prefer filesort over full scan over index for ORDER BY. mysql-test/r/ctype_utf8.result: bug #27531: join cache in EXPLAIN mysql-test/r/derived.result: bug #27531: join cache in EXPLAIN mysql-test/r/distinct.result: bug #27531: join cache in EXPLAIN mysql-test/r/func_group.result: bug #27531: join cache in EXPLAIN mysql-test/r/func_group_innodb.result: bug #27531: join cache in EXPLAIN mysql-test/r/gis.result: bug #27531: join cache in EXPLAIN mysql-test/r/greedy_optimizer.result: bug #27531: join cache in EXPLAIN mysql-test/r/group_by.result: bug #27531: join cache in EXPLAIN mysql-test/r/group_min_max.result: bug #27531: join cache in EXPLAIN mysql-test/r/index_merge_myisam.result: bug #27531: join cache in EXPLAIN mysql-test/r/information_schema.result: bug #27531: join cache in EXPLAIN mysql-test/r/innodb_gis.result: bug #27531: join cache in EXPLAIN mysql-test/r/innodb_mysql.result: bug #27531: join cache in EXPLAIN mysql-test/r/join.result: bug #27531: join cache in EXPLAIN mysql-test/r/join_nested.result: bug #27531: join cache in EXPLAIN mysql-test/r/key_diff.result: bug #27531: join cache in EXPLAIN mysql-test/r/myisam.result: bug #27531: join cache in EXPLAIN mysql-test/r/ndb_condition_pushdown.result: bug #27531: join cache in EXPLAIN mysql-test/r/ndb_gis.result: bug #27531: join cache in EXPLAIN mysql-test/r/range.result: bug #27531: join cache in EXPLAIN mysql-test/r/row.result: bug #27531: join cache in EXPLAIN mysql-test/r/select.result: bug #27531: - join cache in EXPLAIN. - prefer filesort over full scan over index for ORDER BY. mysql-test/r/ssl.result: bug #27531: - join cache in EXPLAIN. - prefer filesort over full scan over index for ORDER BY. mysql-test/r/ssl_compress.result: bug #27531: - join cache in EXPLAIN. - prefer filesort over full scan over index for ORDER BY. mysql-test/r/subselect.result: bug #27531: join cache in EXPLAIN mysql-test/r/subselect3.result: bug #27531: join cache in EXPLAIN mysql-test/r/union.result: bug #27531: join cache in EXPLAIN mysql-test/r/view.result: bug #27531: join cache in EXPLAIN sql/sql_select.cc: bug #27531: - join cache in EXPLAIN. - prefer filesort over full scan over index for ORDER BY. - disable sorting on the first table only when switching from REF to RANGE.
147 lines
3.9 KiB
Text
147 lines
3.9 KiB
Text
create table t1 (USR_ID integer not null, MAX_REQ integer not null, constraint PK_SEA_USER primary key (USR_ID)) engine=InnoDB;
|
|
insert into t1 values (1, 3);
|
|
select count(*) + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ from t1 group by MAX_REQ;
|
|
count(*) + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ
|
|
1
|
|
select Case When Count(*) < MAX_REQ Then 1 Else 0 End from t1 where t1.USR_ID = 1 group by MAX_REQ;
|
|
Case When Count(*) < MAX_REQ Then 1 Else 0 End
|
|
1
|
|
drop table t1;
|
|
create table t1m (a int) engine=myisam;
|
|
create table t1i (a int) engine=innodb;
|
|
create table t2m (a int) engine=myisam;
|
|
create table t2i (a int) engine=innodb;
|
|
insert into t2m values (5);
|
|
insert into t2i values (5);
|
|
select min(a) from t1m;
|
|
min(a)
|
|
NULL
|
|
select min(7) from t1m;
|
|
min(7)
|
|
NULL
|
|
select min(7) from DUAL;
|
|
min(7)
|
|
7
|
|
explain select min(7) from t2m join t1m;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
|
select min(7) from t2m join t1m;
|
|
min(7)
|
|
NULL
|
|
select max(a) from t1m;
|
|
max(a)
|
|
NULL
|
|
select max(7) from t1m;
|
|
max(7)
|
|
NULL
|
|
select max(7) from DUAL;
|
|
max(7)
|
|
7
|
|
explain select max(7) from t2m join t1m;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
|
select max(7) from t2m join t1m;
|
|
max(7)
|
|
NULL
|
|
select 1, min(a) from t1m where a=99;
|
|
1 min(a)
|
|
1 NULL
|
|
select 1, min(a) from t1m where 1=99;
|
|
1 min(a)
|
|
1 NULL
|
|
select 1, min(1) from t1m where a=99;
|
|
1 min(1)
|
|
1 NULL
|
|
select 1, min(1) from t1m where 1=99;
|
|
1 min(1)
|
|
1 NULL
|
|
select 1, max(a) from t1m where a=99;
|
|
1 max(a)
|
|
1 NULL
|
|
select 1, max(a) from t1m where 1=99;
|
|
1 max(a)
|
|
1 NULL
|
|
select 1, max(1) from t1m where a=99;
|
|
1 max(1)
|
|
1 NULL
|
|
select 1, max(1) from t1m where 1=99;
|
|
1 max(1)
|
|
1 NULL
|
|
select min(a) from t1i;
|
|
min(a)
|
|
NULL
|
|
select min(7) from t1i;
|
|
min(7)
|
|
NULL
|
|
select min(7) from DUAL;
|
|
min(7)
|
|
7
|
|
explain select min(7) from t2i join t1i;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t2i ALL NULL NULL NULL NULL 1 Using join cache
|
|
1 SIMPLE t1i ALL NULL NULL NULL NULL 1
|
|
select min(7) from t2i join t1i;
|
|
min(7)
|
|
NULL
|
|
select max(a) from t1i;
|
|
max(a)
|
|
NULL
|
|
select max(7) from t1i;
|
|
max(7)
|
|
NULL
|
|
select max(7) from DUAL;
|
|
max(7)
|
|
7
|
|
explain select max(7) from t2i join t1i;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t2i ALL NULL NULL NULL NULL 1 Using join cache
|
|
1 SIMPLE t1i ALL NULL NULL NULL NULL 1
|
|
select max(7) from t2i join t1i;
|
|
max(7)
|
|
NULL
|
|
select 1, min(a) from t1i where a=99;
|
|
1 min(a)
|
|
1 NULL
|
|
select 1, min(a) from t1i where 1=99;
|
|
1 min(a)
|
|
1 NULL
|
|
select 1, min(1) from t1i where a=99;
|
|
1 min(1)
|
|
1 NULL
|
|
select 1, min(1) from t1i where 1=99;
|
|
1 min(1)
|
|
1 NULL
|
|
select 1, max(a) from t1i where a=99;
|
|
1 max(a)
|
|
1 NULL
|
|
select 1, max(a) from t1i where 1=99;
|
|
1 max(a)
|
|
1 NULL
|
|
select 1, max(1) from t1i where a=99;
|
|
1 max(1)
|
|
1 NULL
|
|
select 1, max(1) from t1i where 1=99;
|
|
1 max(1)
|
|
1 NULL
|
|
explain select count(*), min(7), max(7) from t1m, t1i;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found
|
|
1 SIMPLE t1i ALL NULL NULL NULL NULL 1
|
|
select count(*), min(7), max(7) from t1m, t1i;
|
|
count(*) min(7) max(7)
|
|
0 NULL NULL
|
|
explain select count(*), min(7), max(7) from t1m, t2i;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found
|
|
1 SIMPLE t2i ALL NULL NULL NULL NULL 1
|
|
select count(*), min(7), max(7) from t1m, t2i;
|
|
count(*) min(7) max(7)
|
|
0 NULL NULL
|
|
explain select count(*), min(7), max(7) from t2m, t1i;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t2m system NULL NULL NULL NULL 1
|
|
1 SIMPLE t1i ALL NULL NULL NULL NULL 1
|
|
select count(*), min(7), max(7) from t2m, t1i;
|
|
count(*) min(7) max(7)
|
|
0 NULL NULL
|
|
drop table t1m, t1i, t2m, t2i;
|