mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge 10.4 into 10.5
This commit is contained in:
@ -176,3 +176,68 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
3 LATERAL DERIVED t1 ref a,a_2 a 5 test.t1.a 1 Using where; Using temporary; Using filesort
|
||||
3 LATERAL DERIVED t2 ref c c 5 test.t1.b 1 Using index
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# Bug mdev-25714: usage non-splitting covering index is cheaper than
|
||||
# usage of the best splitting index for one group
|
||||
#
|
||||
create table t1 (
|
||||
id int not null, itemid int not null, index idx (itemid)
|
||||
) engine=innodb;
|
||||
insert into t1 values (1, 2), (2,2), (4,2), (4,2), (0,3), (3,3);
|
||||
create table t2 (id int not null) engine=innodb;
|
||||
insert into t2 values (2);
|
||||
create table t3 (
|
||||
id int not null, itemid int not null, userid int not null, primary key (id),
|
||||
index idx1 (userid, itemid), index idx2 (itemid)
|
||||
) engine innodb;
|
||||
insert into t3 values (1,1,1), (2,1,1), (3,2,1), (4,2,1), (5,3,1);
|
||||
set use_stat_tables='never';
|
||||
set optimizer_use_condition_selectivity=1;
|
||||
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
|
||||
set optimizer_switch='split_materialized=on';
|
||||
explain select t1.id, t1.itemid, dt.id, t2.id
|
||||
from t1,
|
||||
(select itemid, max(id) as id from t3 where userid = 1 group by itemid) dt,
|
||||
t2
|
||||
where t1.id = dt.id and t1.itemid = dt.itemid and t2.id=t1.itemid;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 1
|
||||
1 PRIMARY <derived2> ref key1 key1 4 test.t2.id 2
|
||||
1 PRIMARY t1 ALL idx NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
|
||||
2 DERIVED t3 ref idx1,idx2 idx1 4 const 5 Using where; Using index
|
||||
select t1.id, t1.itemid, dt.id, t2.id
|
||||
from t1,
|
||||
(select itemid, max(id) as id from t3 where userid = 1 group by itemid) dt,
|
||||
t2
|
||||
where t1.id = dt.id and t1.itemid = dt.itemid and t2.id=t1.itemid;
|
||||
id itemid id id
|
||||
4 2 4 2
|
||||
4 2 4 2
|
||||
set optimizer_switch='split_materialized=off';
|
||||
explain select t1.id, t1.itemid, dt.id, t2.id
|
||||
from t1,
|
||||
(select itemid, max(id) as id from t3 where userid = 1 group by itemid) dt,
|
||||
t2
|
||||
where t1.id = dt.id and t1.itemid = dt.itemid and t2.id=t1.itemid;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 1
|
||||
1 PRIMARY <derived2> ref key1 key1 4 test.t2.id 2
|
||||
1 PRIMARY t1 ALL idx NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
|
||||
2 DERIVED t3 ref idx1 idx1 4 const 5 Using where; Using index
|
||||
select t1.id, t1.itemid, dt.id, t2.id
|
||||
from t1,
|
||||
(select itemid, max(id) as id from t3 where userid = 1 group by itemid) dt,
|
||||
t2
|
||||
where t1.id = dt.id and t1.itemid = dt.itemid and t2.id=t1.itemid;
|
||||
id itemid id id
|
||||
4 2 4 2
|
||||
4 2 4 2
|
||||
drop table t1,t2,t3;
|
||||
set optimizer_switch='split_materialized=default';
|
||||
set use_stat_tables=default;
|
||||
set optimizer_use_condition_selectivity=default;
|
||||
# End of 10.3 tests
|
||||
|
Reference in New Issue
Block a user