mirror of
https://github.com/MariaDB/server.git
synced 2026-05-08 08:04:29 +02:00
Make EXPLAIN better at displaying MRR/BKA:
- "Using MRR" is no longer shown with range access. - Instead, both range and BKA accesses will show one of the following: = "Rowid-ordered scan" = "Key-ordered scan" = "Key-ordered Rowid-ordered scan" depending on whether DS-MRR implementation will do scan keys in order, rowids in order, or both. - The patch also introduces a way for other storage engines/MRR implementations to pass information to EXPLAIN output about the properties of employed MRR scans.
This commit is contained in:
parent
886d84d6d1
commit
997445bc8e
46 changed files with 624 additions and 467 deletions
|
|
@ -25,7 +25,7 @@ This should use join buffer:
|
|||
explain select * from t1, t2 where t1.a=t2.a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 8 test.t2.a 1 Using join buffer (flat, BKA join)
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 8 test.t2.a 1 Using join buffer (flat, BKA join); Key-ordered scan
|
||||
This output must be sorted by value of t1.a:
|
||||
select * from t1, t2 where t1.a=t2.a;
|
||||
a b filler a
|
||||
|
|
@ -47,7 +47,7 @@ insert into t2 values ('a-1010=A', 1010), ('a-1030=A', 1030), ('a-1020=A', 1020)
|
|||
explain select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 28 test.t2.a,test.t2.b 1 Using join buffer (flat, BKA join)
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 28 test.t2.a,test.t2.b 1 Using join buffer (flat, BKA join); Key-ordered scan
|
||||
select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||
a b filler a b
|
||||
a-1010=A 1010 filler a-1010=A 1010
|
||||
|
|
@ -57,7 +57,7 @@ insert into t2 values ('a-1030=A', 1030), ('a-1020=A', 1020);
|
|||
explain select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 5 Using where
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 28 test.t2.a,test.t2.b 1 Using join buffer (flat, BKA join)
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 28 test.t2.a,test.t2.b 1 Using join buffer (flat, BKA join); Key-ordered scan
|
||||
select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||
a b filler a b
|
||||
a-1010=A 1010 filler a-1010=A 1010
|
||||
|
|
@ -80,7 +80,7 @@ insert into t2 values ('a-1010=A', 1010), ('a-1030=A', 1030), ('a-1020=A', 1020)
|
|||
explain select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 30 test.t2.a,test.t2.b 1 Using index condition(BKA); Using join buffer (flat, BKA join)
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 30 test.t2.a,test.t2.b 1 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered scan
|
||||
select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||
a b filler a b
|
||||
a-1010=A 1010 filler a-1010=A 1010
|
||||
|
|
@ -89,7 +89,7 @@ a-1030=A 1030 filler a-1030=A 1030
|
|||
explain select * from t1, t2 where t1.a=t2.a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t1 ref PRIMARY PRIMARY 26 test.t2.a 1 Using index condition(BKA); Using join buffer (flat, BKA join)
|
||||
1 SIMPLE t1 ref PRIMARY PRIMARY 26 test.t2.a 1 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered scan
|
||||
select * from t1, t2 where t1.a=t2.a;
|
||||
a b filler a b
|
||||
a-1010=A 1010 filler a-1010=A 1010
|
||||
|
|
@ -109,7 +109,7 @@ insert into t2 values (11,33), (11,22), (11,11);
|
|||
explain select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t1 ref PRIMARY PRIMARY 8 test.t2.a,test.t2.b 1 Using join buffer (flat, BKA join)
|
||||
1 SIMPLE t1 ref PRIMARY PRIMARY 8 test.t2.a,test.t2.b 1 Using join buffer (flat, BKA join); Key-ordered scan
|
||||
select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||
a b c filler a b
|
||||
11 11 11 filler 11 11
|
||||
|
|
@ -131,14 +131,14 @@ set join_cache_level=6;
|
|||
explain select * from t1, t2 where t1.a=t2.a and t2.b + t1.b > 100;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t1 ref PRIMARY PRIMARY 4 test.t2.a 1 Using index condition(BKA); Using join buffer (flat, BKA join)
|
||||
1 SIMPLE t1 ref PRIMARY PRIMARY 4 test.t2.a 1 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered scan
|
||||
select * from t1, t2 where t1.a=t2.a and t2.b + t1.b > 100;
|
||||
a b c filler a b
|
||||
set optimizer_switch='index_condition_pushdown=off';
|
||||
explain select * from t1, t2 where t1.a=t2.a and t2.b + t1.b > 100;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t1 ref PRIMARY PRIMARY 4 test.t2.a 1 Using where; Using join buffer (flat, BKA join)
|
||||
1 SIMPLE t1 ref PRIMARY PRIMARY 4 test.t2.a 1 Using where; Using join buffer (flat, BKA join); Key-ordered scan
|
||||
select * from t1, t2 where t1.a=t2.a and t2.b + t1.b > 100;
|
||||
a b c filler a b
|
||||
set optimizer_switch='index_condition_pushdown=on';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue