mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Updated optimizer costs in multi_range_read_info_const() and sql_select.cc
- multi_range_read_info_const now uses the new records_in_range interface - Added handler::avg_io_cost() - Don't calculate avg_io_cost() in get_sweep_read_cost if avg_io_cost is not 1.0. In this case we trust the avg_io_cost() from the handler. - Changed test_quick_select to use TIME_FOR_COMPARE instead of TIME_FOR_COMPARE_IDX to align this with the rest of the code. - Fixed bug when using test_if_cheaper_ordering where we didn't use keyread if index was changed - Fixed a bug where we didn't use index only read when using order-by-index - Added keyread_time() to HEAP. The default keyread_time() was optimized for blocks and not suitable for HEAP. The effect was the HEAP prefered table scans over ranges for btree indexes. - Fixed get_sweep_read_cost() for HEAP tables - Ensure that range and ref have same cost for simple ranges Added a small cost (MULTI_RANGE_READ_SETUP_COST) to ranges to ensure we favior ref for range for simple queries. - Fixed that matching_candidates_in_table() uses same number of records as the rest of the optimizer - Added avg_io_cost() to JT_EQ_REF cost. This helps calculate the cost for HEAP and temporary tables better. A few tests changed because of this. - heap::read_time() and heap::keyread_time() adjusted to not add +1. This was to ensure that handler::keyread_time() doesn't give higher cost for heap tables than for normal tables. One effect of this is that heap and derived tables stored in heap will prefer key access as this is now regarded as cheap. - Changed cost for index read in sql_select.cc to match multi_range_read_info_const(). All index cost calculation is now done trough one function. - 'ref' will now use quick_cost for keys if it exists. This is done so that for '=' ranges, 'ref' is prefered over 'range'. - scan_time() now takes avg_io_costs() into account - get_delayed_table_estimates() uses block_size and avg_io_cost() - Removed default argument to test_if_order_by_key(); simplifies code
This commit is contained in:
@ -615,7 +615,6 @@ enum data_file_type {
|
||||
#define EQ_RANGE 32U
|
||||
#define NULL_RANGE 64U
|
||||
#define GEOM_FLAG 128U
|
||||
#define SKIP_RANGE 256U
|
||||
|
||||
typedef struct st_key_range
|
||||
{
|
||||
|
@ -1,3 +1,5 @@
|
||||
--source include/have_sequence.inc
|
||||
|
||||
--echo #
|
||||
--echo # Bug#36981 - "innodb crash when selecting for update"
|
||||
--echo #
|
||||
@ -721,10 +723,12 @@ DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (b int NOT NULL, c int, a varchar(1024), PRIMARY KEY (b));
|
||||
INSERT INTO t1 VALUES (1,4,'Ill');
|
||||
insert into t1 select seq+100,5,seq from seq_1_to_100;
|
||||
|
||||
CREATE TABLE t2 (a varchar(1024), KEY (a(512)));
|
||||
INSERT INTO t2 VALUES
|
||||
('Ill'), ('eckqzsflbzaffti'), ('w'), ('she'), ('gxbwypqtjzwywwer'), ('w');
|
||||
insert into t2 select seq from seq_1_to_100;
|
||||
|
||||
SET SESSION optimizer_switch='index_condition_pushdown=off';
|
||||
EXPLAIN
|
||||
|
@ -182,7 +182,7 @@ alter table t2 add index i321(key3, key2, key1);
|
||||
explain select key3 from t2 where key1 = 100 or key2 = 100;
|
||||
|
||||
# index_merge vs 'index', 'index' is better.
|
||||
explain select key3 from t2 where key1 < 500 or key2 < 500;
|
||||
explain select key3 from t2 where key1 < 600 or key2 < 600;
|
||||
|
||||
# index_merge vs 'all', index_merge is better.
|
||||
explain select key7 from t2 where key1 <100 or key2 < 100;
|
||||
|
@ -1159,10 +1159,10 @@ with cte as
|
||||
union
|
||||
(select a from t1 where a < 2);
|
||||
a
|
||||
1
|
||||
4
|
||||
5
|
||||
7
|
||||
1
|
||||
prepare stmt from "with cte as
|
||||
(select a from t1 where a between 4 and 7 group by a)
|
||||
(select a from cte where exists( select a from t1 where cte.a=t1.a ))
|
||||
@ -1170,16 +1170,16 @@ union
|
||||
(select a from t1 where a < 2)";
|
||||
execute stmt;
|
||||
a
|
||||
1
|
||||
4
|
||||
5
|
||||
7
|
||||
1
|
||||
execute stmt;
|
||||
a
|
||||
1
|
||||
4
|
||||
5
|
||||
7
|
||||
1
|
||||
deallocate prepare stmt;
|
||||
with cte as
|
||||
(select a from t1 where a between 4 and 7 group by a)
|
||||
@ -1216,9 +1216,9 @@ union
|
||||
(select a from cte where exists( select a from t1 where cte.a=t1.a ));
|
||||
a
|
||||
1
|
||||
7
|
||||
5
|
||||
4
|
||||
5
|
||||
7
|
||||
prepare stmt from "with cte as
|
||||
(select a from t1 where a between 4 and 7)
|
||||
(select a from t1 where a < 2)
|
||||
@ -1227,15 +1227,15 @@ union
|
||||
execute stmt;
|
||||
a
|
||||
1
|
||||
7
|
||||
5
|
||||
4
|
||||
5
|
||||
7
|
||||
execute stmt;
|
||||
a
|
||||
1
|
||||
7
|
||||
5
|
||||
4
|
||||
5
|
||||
7
|
||||
deallocate prepare stmt;
|
||||
with cte as
|
||||
(select a from t1 where a between 4 and 7)
|
||||
@ -1244,9 +1244,9 @@ where exists( select a from t1 where t1.a < 2 and cte.a=t1.a ))
|
||||
union
|
||||
(select a from cte where exists( select a from t1 where cte.a=t1.a ));
|
||||
a
|
||||
7
|
||||
5
|
||||
4
|
||||
5
|
||||
7
|
||||
prepare stmt from "with cte as
|
||||
(select a from t1 where a between 4 and 7)
|
||||
(select a from cte
|
||||
@ -1255,14 +1255,14 @@ union
|
||||
(select a from cte where exists( select a from t1 where cte.a=t1.a ))";
|
||||
execute stmt;
|
||||
a
|
||||
7
|
||||
5
|
||||
4
|
||||
5
|
||||
7
|
||||
execute stmt;
|
||||
a
|
||||
7
|
||||
5
|
||||
4
|
||||
5
|
||||
7
|
||||
deallocate prepare stmt;
|
||||
drop table t1;
|
||||
#
|
||||
|
@ -808,9 +808,12 @@ with cte as
|
||||
union
|
||||
(select a from t1 where a < 2);
|
||||
|
||||
--sorted_result
|
||||
eval $q1;
|
||||
eval prepare stmt from "$q1";
|
||||
--sorted_result
|
||||
execute stmt;
|
||||
--sorted_result
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
@ -821,9 +824,12 @@ with cte as
|
||||
union
|
||||
(select a from cte where exists( select a from t1 where cte.a=t1.a ));
|
||||
|
||||
--sorted_result
|
||||
eval $q2;
|
||||
eval prepare stmt from "$q2";
|
||||
--sorted_result
|
||||
execute stmt;
|
||||
--sorted_result
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
@ -834,9 +840,12 @@ with cte as
|
||||
union
|
||||
(select a from cte where exists( select a from t1 where cte.a=t1.a ));
|
||||
|
||||
--sorted_result
|
||||
eval $q3;
|
||||
eval prepare stmt from "$q3";
|
||||
--sorted_result
|
||||
execute stmt;
|
||||
--sorted_result
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
@ -848,9 +857,12 @@ with cte as
|
||||
union
|
||||
(select a from cte where exists( select a from t1 where cte.a=t1.a ));
|
||||
|
||||
--sorted_result
|
||||
eval $q4;
|
||||
eval prepare stmt from "$q4";
|
||||
--sorted_result
|
||||
execute stmt;
|
||||
--sorted_result
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
|
@ -1569,7 +1569,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 23 NULL 1 Using where; Using index
|
||||
EXPLAIN SELECT * FROM t1 WHERE a LIKE 'c%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 23 NULL 31 Using where; Using index
|
||||
1 SIMPLE t1 range a a 23 NULL 31 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a LIKE 'c%';
|
||||
a
|
||||
ca
|
||||
@ -1585,7 +1585,7 @@ ch
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) CHARACTER SET ucs2 COLLATE ucs2_croatian_ci;
|
||||
EXPLAIN SELECT * FROM t1 WHERE a LIKE 'd%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 23 NULL 31 Using where; Using index
|
||||
1 SIMPLE t1 range a a 23 NULL 31 Using where; Using index
|
||||
SELECT hex(concat('d',_ucs2 0x017E,'%'));
|
||||
hex(concat('d',_ucs2 0x017E,'%'))
|
||||
0064017E0025
|
||||
|
@ -324,11 +324,11 @@ create table t2 (a int, b int, primary key (a));
|
||||
insert into t2 values (1,7),(2,7);
|
||||
explain select a from t2 where a>1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 1 Using where; Using index
|
||||
explain select a from (select a from t2 where a>1) tt;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
||||
2 DERIVED t2 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
2 DERIVED t2 range PRIMARY PRIMARY 4 NULL 1 Using where; Using index
|
||||
drop table t2;
|
||||
CREATE TABLE `t1` ( `itemid` int(11) NOT NULL default '0', `grpid` varchar(15) NOT NULL default '', `vendor` int(11) NOT NULL default '0', `date_` date NOT NULL default '0000-00-00', `price` decimal(12,2) NOT NULL default '0.00', PRIMARY KEY (`itemid`,`grpid`,`vendor`,`date_`), KEY `itemid` (`itemid`,`vendor`), KEY `itemid_2` (`itemid`,`date_`));
|
||||
insert into t1 values (128, 'rozn', 2, curdate(), 10),
|
||||
@ -1064,16 +1064,19 @@ INSERT INTO t2 VALUES (NULL),(NULL);
|
||||
CREATE TABLE t3 (c VARCHAR(1024) CHARACTER SET utf8, d INT) ENGINE=MyISAM;
|
||||
CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW v3 AS SELECT * FROM t3;
|
||||
INSERT INTO t3 VALUES ('abc',NULL),('def',4);
|
||||
INSERT INTO t1 select seq from seq_1_to_1000;
|
||||
INSERT INTO t2 select seq+1000 from seq_1_to_1000;
|
||||
INSERT INTO t3 select 'qqq',seq+2000 from seq_1_to_1000;
|
||||
set @save_join_cache_level= @@join_cache_level;
|
||||
SET join_cache_level= 8;
|
||||
explain
|
||||
SELECT * FROM v1, t2, v3 WHERE a = c AND b = d;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY <derived3> hash_ALL NULL #hash#$hj 3075 func 2 Using where; Using join buffer (flat, BNLH join)
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 1002
|
||||
1 PRIMARY <derived3> hash_ALL NULL #hash#$hj 3075 func 1002 Using where; Using join buffer (flat, BNLH join)
|
||||
1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 v3.d 1 Using index
|
||||
3 DERIVED t3 ALL NULL NULL NULL NULL 2
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 2
|
||||
3 DERIVED t3 ALL NULL NULL NULL NULL 1002
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 1002
|
||||
SELECT * FROM v1, t2, v3 WHERE a = c AND b = d;
|
||||
a b c d
|
||||
DROP VIEW v1, v3;
|
||||
|
@ -1,5 +1,6 @@
|
||||
# Initialize
|
||||
--source include/default_optimizer_switch.inc
|
||||
--source include/have_sequence.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3;
|
||||
@ -919,6 +920,9 @@ INSERT INTO t2 VALUES (NULL),(NULL);
|
||||
CREATE TABLE t3 (c VARCHAR(1024) CHARACTER SET utf8, d INT) ENGINE=MyISAM;
|
||||
CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW v3 AS SELECT * FROM t3;
|
||||
INSERT INTO t3 VALUES ('abc',NULL),('def',4);
|
||||
INSERT INTO t1 select seq from seq_1_to_1000;
|
||||
INSERT INTO t2 select seq+1000 from seq_1_to_1000;
|
||||
INSERT INTO t3 select 'qqq',seq+2000 from seq_1_to_1000;
|
||||
|
||||
set @save_join_cache_level= @@join_cache_level;
|
||||
SET join_cache_level= 8;
|
||||
|
@ -8828,9 +8828,21 @@ EXPLAIN
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "<derived2>",
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 3,
|
||||
"rows": 4,
|
||||
"filtered": 100,
|
||||
"attached_condition": "t1.id2 is not null"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "<derived2>",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["key0"],
|
||||
"key": "key0",
|
||||
"key_length": "5",
|
||||
"used_key_parts": ["id2"],
|
||||
"ref": ["test.t1.id2"],
|
||||
"rows": 2,
|
||||
"filtered": 100,
|
||||
"attached_condition": "vc.ct > 0",
|
||||
"materialized": {
|
||||
@ -8850,18 +8862,6 @@ EXPLAIN
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"block-nl-join": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 4,
|
||||
"filtered": 100
|
||||
},
|
||||
"buffer_type": "flat",
|
||||
"buffer_size": "163",
|
||||
"join_type": "BNL",
|
||||
"attached_condition": "t1.id2 = vc.id2"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9078,9 +9078,8 @@ WHERE d_tab.e>1
|
||||
)
|
||||
;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 5 Using where
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 Using where
|
||||
1 PRIMARY <derived3> ref key0 key0 10 test.t1.a,test.t1.b 2 FirstMatch(t1)
|
||||
3 DERIVED t2 ALL NULL NULL NULL NULL 5 Using where; Using temporary; Using filesort
|
||||
EXPLAIN FORMAT=JSON SELECT * FROM t1
|
||||
WHERE (t1.a,t1.b) IN
|
||||
@ -9103,44 +9102,33 @@ EXPLAIN
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 5,
|
||||
"filtered": 100
|
||||
"filtered": 100,
|
||||
"attached_condition": "t1.a > 1 and t1.a is not null and t1.b is not null"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "<subquery2>",
|
||||
"access_type": "eq_ref",
|
||||
"possible_keys": ["distinct_key"],
|
||||
"key": "distinct_key",
|
||||
"key_length": "8",
|
||||
"table_name": "<derived3>",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["key0"],
|
||||
"key": "key0",
|
||||
"key_length": "10",
|
||||
"used_key_parts": ["e", "max_f"],
|
||||
"ref": ["func", "func"],
|
||||
"rows": 1,
|
||||
"ref": ["test.t1.a", "test.t1.b"],
|
||||
"rows": 2,
|
||||
"filtered": 100,
|
||||
"first_match": "t1",
|
||||
"materialized": {
|
||||
"unique": 1,
|
||||
"query_block": {
|
||||
"select_id": 2,
|
||||
"table": {
|
||||
"table_name": "<derived3>",
|
||||
"access_type": "ALL",
|
||||
"rows": 5,
|
||||
"filtered": 100,
|
||||
"attached_condition": "d_tab.e > 1",
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 3,
|
||||
"having_condition": "max_f > 18",
|
||||
"filesort": {
|
||||
"sort_key": "t2.e",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t2",
|
||||
"access_type": "ALL",
|
||||
"rows": 5,
|
||||
"filtered": 100,
|
||||
"attached_condition": "t2.e > 1"
|
||||
}
|
||||
}
|
||||
}
|
||||
"select_id": 3,
|
||||
"having_condition": "max_f > 18",
|
||||
"filesort": {
|
||||
"sort_key": "t2.e",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t2",
|
||||
"access_type": "ALL",
|
||||
"rows": 5,
|
||||
"filtered": 100,
|
||||
"attached_condition": "t2.e > 1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9179,9 +9167,8 @@ WHERE d_tab.max_f<25
|
||||
)
|
||||
;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 5 Using where
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 Using where
|
||||
1 PRIMARY <derived3> ref key0 key0 10 test.t1.a,test.t1.b 2 FirstMatch(t1)
|
||||
3 DERIVED t2 ALL NULL NULL NULL NULL 5 Using temporary; Using filesort
|
||||
EXPLAIN FORMAT=JSON SELECT * FROM t1
|
||||
WHERE (t1.a,t1.b) IN
|
||||
@ -9204,43 +9191,32 @@ EXPLAIN
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 5,
|
||||
"filtered": 100
|
||||
"filtered": 100,
|
||||
"attached_condition": "t1.b < 25 and t1.a is not null and t1.b is not null"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "<subquery2>",
|
||||
"access_type": "eq_ref",
|
||||
"possible_keys": ["distinct_key"],
|
||||
"key": "distinct_key",
|
||||
"key_length": "8",
|
||||
"table_name": "<derived3>",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["key0"],
|
||||
"key": "key0",
|
||||
"key_length": "10",
|
||||
"used_key_parts": ["e", "max_f"],
|
||||
"ref": ["func", "func"],
|
||||
"rows": 1,
|
||||
"ref": ["test.t1.a", "test.t1.b"],
|
||||
"rows": 2,
|
||||
"filtered": 100,
|
||||
"first_match": "t1",
|
||||
"materialized": {
|
||||
"unique": 1,
|
||||
"query_block": {
|
||||
"select_id": 2,
|
||||
"table": {
|
||||
"table_name": "<derived3>",
|
||||
"access_type": "ALL",
|
||||
"rows": 5,
|
||||
"filtered": 100,
|
||||
"attached_condition": "d_tab.max_f < 25",
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 3,
|
||||
"having_condition": "max_f > 18 and max_f < 25",
|
||||
"filesort": {
|
||||
"sort_key": "t2.e",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t2",
|
||||
"access_type": "ALL",
|
||||
"rows": 5,
|
||||
"filtered": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
"select_id": 3,
|
||||
"having_condition": "max_f > 18 and max_f < 25",
|
||||
"filesort": {
|
||||
"sort_key": "t2.e",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t2",
|
||||
"access_type": "ALL",
|
||||
"rows": 5,
|
||||
"filtered": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -14045,16 +14021,16 @@ a b max_c a b c
|
||||
1 21 345 3 21 231
|
||||
select * from v1,t2 where (v1.b=t2.b) and (v1.a<5);
|
||||
a b max_c a b c
|
||||
2 33 7 5 33 207
|
||||
4 33 123 5 33 207
|
||||
2 33 7 8 33 117
|
||||
2 33 7 5 33 207
|
||||
4 33 123 8 33 117
|
||||
1 21 345 3 21 231
|
||||
2 33 7 8 33 117
|
||||
3 21 500 3 21 231
|
||||
1 21 345 3 21 231
|
||||
explain select * from v1,t2 where (v1.b=t2.b) and (v1.a<5);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 5 Using where
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
|
||||
1 PRIMARY <derived2> ref key0 key0 5 test.t2.b 2 Using where
|
||||
2 DERIVED t3 range i1 i1 5 NULL 5 Using index condition
|
||||
explain format=json select * from v1,t2 where (v1.b=t2.b) and (v1.a<5);
|
||||
EXPLAIN
|
||||
@ -14062,9 +14038,21 @@ EXPLAIN
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "<derived2>",
|
||||
"table_name": "t2",
|
||||
"access_type": "ALL",
|
||||
"rows": 5,
|
||||
"rows": 9,
|
||||
"filtered": 100,
|
||||
"attached_condition": "t2.b is not null"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "<derived2>",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["key0"],
|
||||
"key": "key0",
|
||||
"key_length": "5",
|
||||
"used_key_parts": ["b"],
|
||||
"ref": ["test.t2.b"],
|
||||
"rows": 2,
|
||||
"filtered": 100,
|
||||
"attached_condition": "v1.a < 5",
|
||||
"materialized": {
|
||||
@ -14083,18 +14071,6 @@ EXPLAIN
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"block-nl-join": {
|
||||
"table": {
|
||||
"table_name": "t2",
|
||||
"access_type": "ALL",
|
||||
"rows": 9,
|
||||
"filtered": 100
|
||||
},
|
||||
"buffer_type": "flat",
|
||||
"buffer_size": "173",
|
||||
"join_type": "BNL",
|
||||
"attached_condition": "t2.b = v1.b"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -137,10 +137,10 @@ create table t2 (a int, b int, primary key (a));
|
||||
insert into t2 values (1,7),(2,7);
|
||||
explain select a from t2 where a>1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 1 Using where; Using index
|
||||
explain select a from (select a from t2 where a>1) tt;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 1 Using where; Using index
|
||||
drop table t2;
|
||||
create table t1
|
||||
(
|
||||
|
@ -9,6 +9,7 @@ KEY c1 (c1),
|
||||
KEY n1_c1_n2 (n1,c1,n2)
|
||||
) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (0, 2, 'a'), (1, 3, 'a');
|
||||
insert into t1 select seq+1,seq+2,'c' from seq_1_to_1000;
|
||||
ANALYZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
@ -16,7 +17,7 @@ test.t1 analyze status OK
|
||||
EXPLAIN SELECT t1.n1 FROM t1, (SELECT n1, n2 FROM t1 WHERE c1 = 'a' GROUP BY n1) as t
|
||||
WHERE t.n1 = t1.n1 AND t.n2 = t1.n2 AND c1 = 'a' GROUP BY n1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index c1,n1_c1_n2 n1_c1_n2 9 NULL 2 Using where; Using index
|
||||
1 PRIMARY t1 ref c1,n1_c1_n2 c1 1 const 2 Using index condition; Using where; Using temporary; Using filesort
|
||||
1 PRIMARY <derived2> ref key0 key0 8 test.t1.n1,test.t1.n2 2
|
||||
2 LATERAL DERIVED t1 ref c1,n1_c1_n2 n1_c1_n2 4 test.t1.n1 1 Using where; Using index
|
||||
SELECT t1.n1 FROM t1, (SELECT n1, n2 FROM t1 WHERE c1 = 'a' GROUP BY n1) as t
|
||||
|
@ -1,5 +1,6 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/default_optimizer_switch.inc
|
||||
--source include/have_sequence.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16917: do not use splitting for derived with join cache
|
||||
@ -13,6 +14,7 @@ CREATE TABLE t1 (
|
||||
KEY n1_c1_n2 (n1,c1,n2)
|
||||
) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (0, 2, 'a'), (1, 3, 'a');
|
||||
insert into t1 select seq+1,seq+2,'c' from seq_1_to_1000;
|
||||
|
||||
ANALYZE TABLE t1;
|
||||
|
||||
|
@ -18,3 +18,5 @@ file_contents : MDEV-6526 these files are not installed anymore
|
||||
max_statement_time : cannot possibly work, depends on timing
|
||||
partition_open_files_limit : open_files_limit check broken by MDEV-18360
|
||||
partition_innodb : Waiting for fix MDEV-20169
|
||||
type_enum : Waiting for fix MDEV-6978
|
||||
type_set : Waiting for fix MDEV-6978
|
||||
|
@ -538,10 +538,10 @@ PRIMARY KEY (a,b));
|
||||
INSERT INTO t2 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
|
||||
EXPLAIN SELECT DISTINCT a FROM t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index
|
||||
1 SIMPLE t2 range NULL PRIMARY 4 NULL 4 Using index for group-by
|
||||
EXPLAIN SELECT DISTINCT a,a FROM t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index
|
||||
1 SIMPLE t2 range NULL PRIMARY 4 NULL 4 Using index for group-by
|
||||
EXPLAIN SELECT DISTINCT b,a FROM t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index
|
||||
@ -756,7 +756,7 @@ INSERT INTO t1(a, b, c) VALUES (1, 1, 1),
|
||||
(1, 2, 3);
|
||||
EXPLAIN SELECT DISTINCT a, b, d, c FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a 16 NULL 6 Using index
|
||||
1 SIMPLE t1 range NULL PRIMARY 16 NULL 7 Using index for group-by; Using temporary
|
||||
SELECT DISTINCT a, b, d, c FROM t1;
|
||||
a b d c
|
||||
1 1 0 1
|
||||
|
@ -1037,7 +1037,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 147 NULL 17 Using where; Using index for group-by
|
||||
explain select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 163 NULL 65 Using where; Using index for group-by (scanning)
|
||||
1 SIMPLE t1 range NULL idx_t1_1 163 NULL 65 Using where; Using index for group-by
|
||||
explain format=json select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
|
||||
EXPLAIN
|
||||
{
|
||||
@ -1070,7 +1070,7 @@ EXPLAIN
|
||||
"rows": 65,
|
||||
"filtered": 100,
|
||||
"attached_condition": "t1.b = 'a' and t1.c = 'i121' and t1.a2 >= 'b'",
|
||||
"using_index_for_group_by": "scanning"
|
||||
"using_index_for_group_by": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -604,11 +604,11 @@ AME AME
|
||||
explain
|
||||
select min(a1) from t1 where a1 > 'KKK' or a1 < 'XXX';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY PRIMARY 3 NULL 15 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 0 NULL 15 Using where; Using index
|
||||
explain
|
||||
select min(a1) from t1 where a1 != 'KKK';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY PRIMARY 3 NULL 15 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 3 NULL 14 Using where; Using index
|
||||
explain
|
||||
select max(a3) from t1 where a2 < 2 and a3 < 'SEA';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -653,7 +653,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
explain
|
||||
select concat(min(t1.a1),min(t2.a4)) from t1, t2 where t2.a4 <> 'AME';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index k2 k2 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t2 range k2 k2 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 index NULL PRIMARY 3 NULL 15 Using index; Using join buffer (flat, BNL join)
|
||||
drop table t1, t2;
|
||||
create table t1 (a char(10));
|
||||
@ -1927,7 +1927,7 @@ b
|
||||
EXPLAIN
|
||||
SELECT MIN(f2) FROM t1 WHERE f2 >= 'abc';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index f2 f2 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 range f2 f2 4 NULL 1 Using where; Using index
|
||||
SELECT MIN(f2) FROM t1 WHERE f2 >= 'abc';
|
||||
MIN(f2)
|
||||
b
|
||||
@ -1941,7 +1941,7 @@ b
|
||||
EXPLAIN
|
||||
SELECT MIN(f2) FROM t1 WHERE f2 BETWEEN 'abc' AND 'b' ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index f2 f2 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 range f2 f2 4 NULL 1 Using where; Using index
|
||||
SELECT MIN(f2) FROM t1 WHERE f2 BETWEEN 'abc' AND 'b' ;
|
||||
MIN(f2)
|
||||
b
|
||||
|
@ -522,7 +522,7 @@ a
|
||||
b
|
||||
explain select f1 from t1 where f1 in ('a','b');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index t1f1_idx t1f1_idx 2 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 range t1f1_idx t1f1_idx 2 NULL 2 Using where; Using index
|
||||
select f1 from t1 where f1 in (2,1);
|
||||
f1
|
||||
1
|
||||
@ -553,7 +553,7 @@ Warning 1292 Truncated incorrect DOUBLE value: 'a'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b'
|
||||
explain select f2 from t2 where f2 in ('a','b');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index t2f2 t2f2 5 NULL 3 Using where; Using index
|
||||
1 SIMPLE t2 range t2f2 t2f2 5 NULL 1 Using where; Using index
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b'
|
||||
|
@ -3,12 +3,12 @@ create table t1 (a varchar(10), key(a));
|
||||
insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test");
|
||||
explain extended select * from t1 where a like 'abc%';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 index a a 13 NULL 5 40.00 Using where; Using index
|
||||
1 SIMPLE t1 range a a 13 NULL 2 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` like 'abc%'
|
||||
explain extended select * from t1 where a like concat('abc','%');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 index a a 13 NULL 5 40.00 Using where; Using index
|
||||
1 SIMPLE t1 range a a 13 NULL 2 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` like <cache>(concat('abc','%'))
|
||||
select * from t1 where a like "abc%";
|
||||
|
@ -1578,7 +1578,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
EXPLAIN SELECT a FROM t1 FORCE INDEX FOR JOIN (i2)
|
||||
FORCE INDEX FOR GROUP BY (i2) GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL i2 9 NULL 144 Using index
|
||||
1 SIMPLE t1 range NULL i2 4 NULL 145 Using index for group-by
|
||||
EXPLAIN SELECT a FROM t1 USE INDEX () IGNORE INDEX (i2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 144
|
||||
@ -1701,7 +1701,7 @@ NULL 1
|
||||
1 2
|
||||
EXPLAIN SELECT a from t2 GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL a 10 NULL 6 Using index
|
||||
1 SIMPLE t2 range NULL a 5 NULL 7 Using index for group-by
|
||||
SELECT a from t2 GROUP BY a;
|
||||
a
|
||||
NULL
|
||||
|
@ -35,6 +35,8 @@ insert into t1 (a1, a2, b, c, d) values
|
||||
('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');
|
||||
insert into t1 select * from t1;
|
||||
insert into t1 select * from t1;
|
||||
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);
|
||||
@ -290,34 +292,34 @@ 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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 10 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 12 Using where; Using index for group-by
|
||||
explain select a1,a2,b,min(c),max(c) from t1 where a1 >= 'b' group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 14 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 Using where; Using index for group-by
|
||||
explain select a1,a2,b, max(c) from t1 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 14 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 Using where; Using index for group-by
|
||||
explain select a1, max(c) from t1 where a1 >= 'c' or a1 < 'b' group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 14 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 17 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 10 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 9 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 10 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 9 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 10 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 9 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 10 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 9 Using where; Using index for group-by
|
||||
explain select a1,min(c),max(c) from t1 where a1 >= 'b' group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 14 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 Using where; Using index for group-by
|
||||
explain select a1, max(c) from t1 where a1 in ('a','b','d') group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 Using where; Using index for group-by
|
||||
@ -1361,9 +1363,9 @@ 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 type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 128 Using index
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 512 Using index
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 func 1
|
||||
2 MATERIALIZED t2 index NULL idx_t2_1 163 NULL 164 Using index
|
||||
2 MATERIALIZED t2 index NULL idx_t2_1 163 NULL 548 Using index
|
||||
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;
|
||||
@ -1388,8 +1390,8 @@ 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 type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 128 Using index
|
||||
2 SUBQUERY t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 512 Using index
|
||||
2 SUBQUERY t2 index NULL idx_t2_1 163 NULL 548 Using where; Using index
|
||||
select a1,a2,b,min(c),max(c) from t1
|
||||
where exists ( select * from t2 where t2.c > 'b1' )
|
||||
group by a1,a2,b;
|
||||
@ -1414,8 +1416,8 @@ explain select a1,a2,b,c,min(c), max(c) from t1
|
||||
where exists ( select * from t2 where t1.b > 'a' and t2.c > 'b1' )
|
||||
group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 128 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 512 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t2 index NULL idx_t2_1 163 NULL 548 Using where; Using index
|
||||
select a1,a2,b,c,min(c), max(c) from t1
|
||||
where exists ( select * from t2 where t1.b > 'a' and t2.c > 'b1' )
|
||||
group by a1,a2,b;
|
||||
@ -1436,8 +1438,8 @@ where t2.c in (select c from t3 where t3.c > t1.b) and
|
||||
t2.c > 'b1' )
|
||||
group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 128 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 512 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t2 index NULL idx_t2_1 163 NULL 548 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t3 index NULL idx_t3_1 10 NULL 192 Using where; Using index; FirstMatch(t2)
|
||||
select a1,a2,b,c,min(c), max(c) from t1
|
||||
where exists ( select * from t2
|
||||
@ -1466,8 +1468,8 @@ explain select a1,a2,b,c,min(c), max(c) from t1
|
||||
where exists ( select * from t2 where t1.c > 'a' and t2.c > 'b1' )
|
||||
group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 128 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 512 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t2 index NULL idx_t2_1 163 NULL 548 Using where; Using index
|
||||
select a1,a2,b,c,min(c), max(c) from t1
|
||||
where exists ( select * from t2 where t1.c > 'a' and t2.c > 'b1' )
|
||||
group by a1,a2,b;
|
||||
@ -1496,8 +1498,8 @@ where t2.c in (select c from t3 where t3.c > t1.c) and
|
||||
t2.c > 'b1' )
|
||||
group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 128 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||
1 PRIMARY t1 index NULL idx_t1_1 163 NULL 512 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t2 index NULL idx_t2_1 163 NULL 548 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t3 index NULL idx_t3_1 10 NULL 192 Using where; Using index; FirstMatch(t2)
|
||||
select a1,a2,b,c,min(c), max(c) from t1
|
||||
where exists ( select * from t2
|
||||
@ -1533,13 +1535,13 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 163 NULL 17 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 14 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 13 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 14 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 13 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 14 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 147 NULL 17 Using where; Using index for group-by
|
||||
@ -1656,7 +1658,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 163 NULL 17 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 13 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 146 NULL # Using where; Using index for group-by
|
||||
@ -1716,15 +1718,15 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 147 NULL 17 Using where; Using index for group-by
|
||||
explain extended select distinct a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 index NULL idx_t1_1 163 NULL 128 0.38 Using where; Using index
|
||||
1 SIMPLE t1 range NULL idx_t1_1 163 NULL 65 100.00 Using where; Using index for group-by
|
||||
Warnings:
|
||||
Note 1003 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`.`b` = 'a' and `test`.`t1`.`c` = 'i121' 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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 13 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 Using where; Using index for group-by
|
||||
explain select distinct b from t1 where (a2 >= 'b') and (b = 'a');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using where; Using index
|
||||
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 512 Using where; Using index
|
||||
explain select distinct a1,a2,b from t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range NULL idx_t2_1 146 NULL # Using index for group-by
|
||||
@ -1733,7 +1735,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range NULL idx_t2_1 146 NULL # Using where; Using index for group-by
|
||||
explain extended select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index NULL idx_t2_1 163 NULL 164 0.30 Using where; Using index
|
||||
1 SIMPLE t2 range NULL idx_t2_1 163 NULL 69 100.00 Using where; Using index for group-by
|
||||
Warnings:
|
||||
Note 1003 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`.`b` = 'a' and `test`.`t2`.`c` = 'i121' and `test`.`t2`.`a2` >= 'b'
|
||||
explain select distinct a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
|
||||
@ -1741,7 +1743,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range idx_t2_0,idx_t2_1,idx_t2_2 idx_t2_1 146 NULL # Using where; Using index for group-by
|
||||
explain select distinct b from t2 where (a2 >= 'b') and (b = 'a');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL idx_t2_2 146 NULL 164 Using where; Using index
|
||||
1 SIMPLE t2 index NULL idx_t2_2 146 NULL 548 Using where; Using index
|
||||
select distinct a1,a2,b from t1;
|
||||
a1 a2 b
|
||||
a a a
|
||||
@ -1867,7 +1869,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 163 NULL 17 Using where; Using index for group-by
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 13 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 Using where; Using index for group-by
|
||||
explain select distinct b from t1 where (a2 >= 'b') and (b = 'a') group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 147 NULL 17 Using where; Using index for group-by; Using temporary; Using filesort
|
||||
@ -1959,18 +1961,18 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 147 NULL 17 Using where; Using index for group-by
|
||||
explain select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 163 NULL 65 Using where; Using index for group-by (scanning)
|
||||
1 SIMPLE t1 range NULL idx_t1_1 163 NULL 65 Using where; Using index for group-by
|
||||
explain extended select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 13 100.00 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 100.00 Using where; Using index for group-by
|
||||
Warnings:
|
||||
Note 1003 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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using where; Using index
|
||||
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 512 Using where; Using index
|
||||
explain extended select 98 + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 13 100.00 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 13 100.00 Using where; Using index for group-by
|
||||
Warnings:
|
||||
Note 1003 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');
|
||||
@ -1990,16 +1992,16 @@ select 98 + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 10 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 12 Using where; Using index for group-by
|
||||
explain select concat(a1,min(c)),b from t1 where a1 < 'd' group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 10 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 12 Using where; Using index for group-by
|
||||
explain select concat(a1,min(c)),b,max(c) from t1 where a1 < 'd' group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 10 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 12 Using where; Using index for group-by
|
||||
explain select concat(a1,a2),b,min(c),max(c) from t1 where a1 < 'd' group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 10 Using where; Using index for group-by
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 12 Using where; Using index for group-by
|
||||
explain select concat(ord(min(b)),ord(max(b))),min(b),max(b) from t1 group by a1,a2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL idx_t1_1 147 NULL 9 Using index for group-by
|
||||
@ -2071,63 +2073,63 @@ concat(ord(min(b)),ord(max(b))) min(b) max(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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using temporary; Using filesort
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 512 Using temporary; Using filesort
|
||||
explain select a1,a2,b,d from t1 group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using temporary; Using filesort
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 512 Using temporary; Using filesort
|
||||
explain extended 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 type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL 77 99.22 Using where; Using index
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL 276 99.22 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 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 extended 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 type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL idx_t1_0,idx_t1_1,idx_t1_2 NULL NULL NULL 128 45.12 Using where; Using temporary; Using filesort
|
||||
1 SIMPLE t1 ALL idx_t1_0,idx_t1_1,idx_t1_2 NULL NULL NULL 512 40.43 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 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 extended 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 type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL idx_t1_0,idx_t1_1,idx_t1_2 NULL NULL NULL 128 45.12 Using where; Using temporary; Using filesort
|
||||
1 SIMPLE t1 ALL idx_t1_0,idx_t1_1,idx_t1_2 NULL NULL NULL 512 40.43 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||
1 SIMPLE t2 index NULL idx_t2_1 163 NULL 548 Using where; Using index
|
||||
explain extended 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 type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL 77 99.22 Using where; Using index
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 130 NULL 276 99.22 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||
1 SIMPLE t2 index NULL idx_t2_1 163 NULL 548 Using where; Using index
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||
1 SIMPLE t2 index NULL idx_t2_1 163 NULL 548 Using where; Using index
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||
1 SIMPLE t2 index NULL idx_t2_1 163 NULL 548 Using where; Using index
|
||||
explain select a1, a2, b, c, min(d), max(d) from t1 group by a1,a2,b,c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using temporary; Using filesort
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 512 Using temporary; Using filesort
|
||||
explain select a1,a2,count(a2) from t1 group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using index
|
||||
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 512 Using index
|
||||
explain extended select a1,a2,count(a2) from t1 where (a1 > 'a') group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 101 95.05 Using where; Using index
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 392 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 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 extended select sum(ord(a1)) from t1 where (a1 > 'a') group by a1,a2,b;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 101 95.05 Using where; Using index
|
||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 65 NULL 392 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 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`
|
||||
create table t4 as select distinct a1, a2, b, c from t1;
|
||||
@ -2158,7 +2160,7 @@ d b b m422
|
||||
drop table t4;
|
||||
explain select distinct(a1) from t1 where ord(a2) = 98;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using where; Using index
|
||||
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 512 Using where; Using index
|
||||
select distinct(a1) from t1 where ord(a2) = 98;
|
||||
a1
|
||||
a
|
||||
@ -2372,7 +2374,7 @@ CREATE TABLE t2 (a int, b int, c int, PRIMARY KEY (a,b,c));
|
||||
INSERT INTO t2 SELECT a,b,b FROM t1;
|
||||
explain SELECT MIN(c) FROM t2 WHERE b = 2 and a = 1 and c > 1 GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 12 NULL 1 Using where; Using index for group-by
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 12 NULL 1 Using where; Using index
|
||||
SELECT MIN(c) FROM t2 WHERE b = 2 and a = 1 and c > 1 GROUP BY a;
|
||||
MIN(c)
|
||||
2
|
||||
@ -2386,7 +2388,7 @@ test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
EXPLAIN SELECT max(b), a FROM t1 GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a 10 NULL 15 Using index
|
||||
1 SIMPLE t1 range NULL a 5 NULL 6 Using index for group-by
|
||||
FLUSH STATUS;
|
||||
SELECT max(b), a FROM t1 GROUP BY a;
|
||||
max(b) a
|
||||
@ -2396,18 +2398,18 @@ max(b) a
|
||||
6 4
|
||||
SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 0
|
||||
Handler_read_next 15
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
EXPLAIN SELECT max(b), a FROM t1 GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a 10 NULL 15 Using index
|
||||
1 SIMPLE t1 range NULL a 5 NULL 6 Using index for group-by
|
||||
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 0
|
||||
Handler_read_next 15
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM (SELECT max(b), a FROM t1 GROUP BY a) b;
|
||||
@ -2418,8 +2420,8 @@ max(b) a
|
||||
6 4
|
||||
SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 0
|
||||
Handler_read_next 15
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
(SELECT max(b), a FROM t1 GROUP BY a) UNION
|
||||
@ -2431,20 +2433,20 @@ max(b) a
|
||||
6 4
|
||||
SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 0
|
||||
Handler_read_next 30
|
||||
Handler_read_key 16
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 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 type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL a 10 NULL 15 Using index
|
||||
2 UNION t1 index NULL a 10 NULL 15 Using index
|
||||
1 PRIMARY t1 range NULL a 5 NULL 6 Using index for group-by
|
||||
2 UNION t1 range NULL a 5 NULL 6 Using index for group-by
|
||||
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL
|
||||
EXPLAIN SELECT (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2) x
|
||||
FROM t1 AS t1_outer;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1_outer index NULL a 10 NULL 15 Using index
|
||||
2 SUBQUERY t1 range a a 5 NULL 2 Using where; Using index for group-by
|
||||
2 SUBQUERY t1 range a a 5 NULL 5 Using where; Using index
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
@ -2454,38 +2456,38 @@ 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 type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 range a a 5 NULL 2 Using where; Using index for group-by
|
||||
2 SUBQUERY t1 range a a 5 NULL 5 Using where; Using index
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||
1 PRIMARY t1_outer ref a a 5 <subquery2>.max(b) 3 Using index
|
||||
2 MATERIALIZED t1 range a a 5 NULL 2 Using where; Using index for group-by
|
||||
1 PRIMARY t1_outer index a a 10 NULL 15 Using where; Using index
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 test.t1_outer.a 1
|
||||
2 MATERIALIZED t1 range a a 5 NULL 5 Using where; Using index
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1_outer index NULL a 10 NULL 15 Using index
|
||||
2 SUBQUERY t1 range a a 5 NULL 2 Using where; Using index for group-by
|
||||
1 PRIMARY t1_outer range NULL a 5 NULL 6 Using index for group-by
|
||||
2 SUBQUERY t1 range a a 5 NULL 5 Using where; Using index
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1_outer1 ref a a 5 const 1 Using where; Using index
|
||||
1 PRIMARY t1_outer2 index NULL a 10 NULL 15 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY t1 range a a 5 NULL 2 Using where; Using index for group-by
|
||||
2 SUBQUERY t1 range a a 5 NULL 5 Using where; Using index
|
||||
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 type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1_outer2 index NULL a 10 NULL 15 Using index
|
||||
2 SUBQUERY t1_outer index NULL a 10 NULL 15 Using index
|
||||
3 SUBQUERY t1 range a a 5 NULL 2 Using where; Using index for group-by
|
||||
3 SUBQUERY t1 range a a 5 NULL 5 Using where; Using index
|
||||
CREATE TABLE t3 LIKE t1;
|
||||
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 5
|
||||
Handler_read_next 15
|
||||
Handler_read_key 13
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
DELETE FROM t3;
|
||||
FLUSH STATUS;
|
||||
@ -2493,15 +2495,15 @@ 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 0
|
||||
Handler_read_next 15
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 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 0
|
||||
Handler_read_next 15
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
DELETE FROM t3 WHERE (SELECT (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2) x
|
||||
@ -2509,8 +2511,8 @@ FROM t1) > 10000;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 0
|
||||
Handler_read_next 16
|
||||
Handler_read_key 8
|
||||
Handler_read_next 1
|
||||
Handler_read_retry 0
|
||||
DROP TABLE t1,t2,t3;
|
||||
CREATE TABLE t1 (a int, INDEX idx(a));
|
||||
@ -2662,7 +2664,7 @@ a b
|
||||
3 13
|
||||
explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ref a,index a 5 const 15 100.00 Using index; Using temporary
|
||||
1 SIMPLE t1 ref a,index a 5 const 15 20.00 Using index; Using temporary
|
||||
Warnings:
|
||||
Note 1003 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;
|
||||
@ -3662,7 +3664,7 @@ f1 COUNT(DISTINCT f2)
|
||||
3 4
|
||||
explain SELECT f1, COUNT(DISTINCT f2) FROM t1 GROUP BY f1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL f1 5 NULL 9 Using index for group-by (scanning)
|
||||
1 SIMPLE t1 range NULL f1 5 NULL 9 Using index for group-by
|
||||
drop table t1;
|
||||
# End of test#50539.
|
||||
#
|
||||
@ -4000,10 +4002,10 @@ 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
|
||||
explain select min(a) from t1 where a between "a" and "Cafeeeeeeeeeeeeeeeeeeeeeeeeee";
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 13 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 range a a 13 NULL 2 Using where; Using index
|
||||
explain select min(a) from t1 where a between "abbbbbbbbbbbbbbbbbbbb" and "Cafe2";
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 13 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 range a a 13 NULL 2 Using where; Using index
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-15433: Optimizer does not use group by optimization with distinct
|
||||
|
@ -53,6 +53,8 @@ insert into t1 (a1, a2, b, c, d) values
|
||||
('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');
|
||||
insert into t1 select * from t1;
|
||||
insert into t1 select * from t1;
|
||||
|
||||
create index idx_t1_0 on t1 (a1);
|
||||
create index idx_t1_1 on t1 (a1,a2,b,c);
|
||||
|
@ -80,7 +80,7 @@ EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name LIKE 'M%' AND Population > 7000000;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population,Name Population 4 NULL # Using index condition; Using where
|
||||
1 SIMPLE City index_merge Population,Name Population,Name 4,35 NULL # Using sort_intersect(Population,Name); Using where
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE Name LIKE 'C%' AND Population > 1000000;
|
||||
ID Name Country Population
|
||||
@ -335,8 +335,8 @@ ID Name Country Population
|
||||
SELECT * FROM City
|
||||
WHERE Name LIKE 'M%' AND Population > 7000000;
|
||||
ID Name Country Population
|
||||
3580 Moscow RUS 8389200
|
||||
1024 Mumbai (Bombay) IND 10500000
|
||||
3580 Moscow RUS 8389200
|
||||
SELECT COUNT(*) FROM City WHERE Name BETWEEN 'M' AND 'N';
|
||||
COUNT(*)
|
||||
301
|
||||
@ -368,14 +368,14 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Name,Population 35,4 NULL # Using sort_intersect(Name,Population); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Population,Country 4,3 NULL # Using sort_intersect(Population,Country); Using where
|
||||
1 SIMPLE City index_merge Population,Country,Name Population,Country,Name 4,3,35 NULL # Using sort_intersect(Population,Country,Name); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 500000 AND Country LIKE 'C%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population,Name,Country Name # NULL # Using index condition; Using where
|
||||
1 SIMPLE City index_merge Population,Name,Country Name,Country,Population # NULL # Using sort_intersect(Name,Country,Population); Using where
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE Name BETWEEN 'M' AND 'N' AND Population > 1000000 AND Country LIKE 'C%';
|
||||
ID Name Country Population
|
||||
@ -387,12 +387,14 @@ ID Name Country Population
|
||||
1810 Montréal CAN 1016376
|
||||
2259 Medellín COL 1861265
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
ID Name Country Population
|
||||
1533 Jokohama [Yokohama] JPN 3339594
|
||||
1541 Hiroshima JPN 1119117
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
ID Name Country Population
|
||||
1533 Jokohama [Yokohama] JPN 3339594
|
||||
1541 Hiroshima JPN 1119117
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 500000 AND Country LIKE 'C%';
|
||||
@ -464,17 +466,17 @@ EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ID BETWEEN 501 AND 1000 AND Population > 700000 AND Country LIKE 'C%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range PRIMARY,Population,Country Population 4 NULL # Using index condition; Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country Population,PRIMARY,Country 4,4,3 NULL # Using sort_intersect(Population,PRIMARY,Country); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ID BETWEEN 1 AND 500 AND Population > 700000 AND Country LIKE 'C%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range PRIMARY,Population,Country Population 4 NULL # Using index condition; Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country Population,PRIMARY,Country 4,4,3 NULL # Using sort_intersect(Population,PRIMARY,Country); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ID BETWEEN 2001 AND 2500 AND Population > 300000 AND Country LIKE 'H%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range PRIMARY,Population,Country Country 3 NULL # Using index condition; Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country Country,PRIMARY 3,4 NULL # Using sort_intersect(Country,PRIMARY); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ID BETWEEN 3701 AND 4000 AND Population > 1000000
|
||||
@ -693,7 +695,7 @@ ID Name Country Population
|
||||
3808 Austin USA 656562
|
||||
3809 Baltimore USA 651154
|
||||
3810 Memphis USA 650100
|
||||
SET SESSION sort_buffer_size = 2048;
|
||||
SET SESSION sort_buffer_size = IF(@@version_compile_machine like '%64%', 2048, 1536);
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE
|
||||
Name LIKE 'C%' AND Population > 1000000;
|
||||
@ -706,7 +708,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Name Population,Name 4,35 NULL # Using sort_intersect(Population,Name); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Population,Country 4,3 NULL # Using sort_intersect(Population,Country); Using where
|
||||
EXPLAIN
|
||||
|
@ -139,7 +139,7 @@ SELECT * FROM City
|
||||
--replace_column 9 #
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
|
||||
--replace_column 7 # 9 #
|
||||
--replace_result Population,Country,Name Population,Name,Country
|
||||
@ -161,11 +161,11 @@ SELECT * FROM City
|
||||
|
||||
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
|
||||
--sorted_result
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
|
||||
|
||||
SELECT * FROM City USE INDEX ()
|
||||
@ -276,9 +276,21 @@ SELECT * FROM City
|
||||
WHERE ID BETWEEN 3001 AND 4000 AND Population > 600000
|
||||
AND Country BETWEEN 'S' AND 'Z' ;
|
||||
|
||||
# Originally this was just sort_buffer_size=2048. Then, it started
|
||||
# failing on 32bit due to different cost number in
|
||||
# Unique::get_use_cost() because of sizeof(sizeof(TREE_ELEMENT)+key_size)
|
||||
|
||||
SET SESSION sort_buffer_size = 2048;
|
||||
# On 64 bit: Unique object element_size=32, which gives 2048/32= 64 elements
|
||||
# in the tree.
|
||||
# On 32 bit: Unique object element_size=24.
|
||||
# If we want 64 elements in the tree, we need 64*24=1536 as sort_buffer_size.
|
||||
|
||||
# The purpose of setting sort_buffer_size is to show that some of the following
|
||||
# explains should use 'index_merge' while others should use range
|
||||
# If the following code causes future problems, the other option would be
|
||||
# to create a separate result-.diff file for 32 bit.
|
||||
|
||||
SET SESSION sort_buffer_size = IF(@@version_compile_machine like '%64%', 2048, 1536);
|
||||
|
||||
# The following EXPLAIN command demonstrate that the execution plans
|
||||
# may be different if sort_buffer_size is set to a small value
|
||||
@ -298,7 +310,7 @@ SELECT * FROM City WHERE
|
||||
--replace_column 9 #
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
|
||||
--replace_column 9 #
|
||||
EXPLAIN
|
||||
|
@ -86,7 +86,7 @@ EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name LIKE 'M%' AND Population > 7000000;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population,Name Population 4 NULL # Using index condition; Using where
|
||||
1 SIMPLE City index_merge Population,Name Population,Name 4,35 NULL # Using sort_intersect(Population,Name); Using where
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE Name LIKE 'C%' AND Population > 1000000;
|
||||
ID Name Country Population
|
||||
@ -341,8 +341,8 @@ ID Name Country Population
|
||||
SELECT * FROM City
|
||||
WHERE Name LIKE 'M%' AND Population > 7000000;
|
||||
ID Name Country Population
|
||||
3580 Moscow RUS 8389200
|
||||
1024 Mumbai (Bombay) IND 10500000
|
||||
3580 Moscow RUS 8389200
|
||||
SELECT COUNT(*) FROM City WHERE Name BETWEEN 'M' AND 'N';
|
||||
COUNT(*)
|
||||
301
|
||||
@ -371,12 +371,12 @@ EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'M' AND 'N' AND Population > 1000000 AND Country LIKE 'C%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Population,Name 4,35 NULL # Using sort_intersect(Population,Name); Using where
|
||||
1 SIMPLE City index_merge Population,Country,Name Population,Name,Country 4,35,3 NULL # Using sort_intersect(Population,Name,Country); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Population,Country 4,3 NULL # Using sort_intersect(Population,Country); Using where
|
||||
1 SIMPLE City index_merge Population,Country,Name Population,Country,Name 4,3,35 NULL # Using sort_intersect(Population,Country,Name); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 500000 AND Country LIKE 'C%';
|
||||
@ -393,12 +393,14 @@ ID Name Country Population
|
||||
1810 Montréal CAN 1016376
|
||||
2259 Medellín COL 1861265
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
ID Name Country Population
|
||||
1533 Jokohama [Yokohama] JPN 3339594
|
||||
1541 Hiroshima JPN 1119117
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
ID Name Country Population
|
||||
1533 Jokohama [Yokohama] JPN 3339594
|
||||
1541 Hiroshima JPN 1119117
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 500000 AND Country LIKE 'C%';
|
||||
@ -480,13 +482,13 @@ EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ID BETWEEN 2001 AND 2500 AND Population > 300000 AND Country LIKE 'H%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range PRIMARY,Population,Country Country 7 NULL # Using index condition; Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country PRIMARY,Population,Country 4,4,7 NULL # Using sort_intersect(PRIMARY,Population,Country); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ID BETWEEN 3701 AND 4000 AND Population > 1000000
|
||||
AND Country BETWEEN 'S' AND 'Z';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country PRIMARY,Population 4,4 NULL # Using sort_intersect(PRIMARY,Population); Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country PRIMARY,Population,Country 4,4,7 NULL # Using sort_intersect(PRIMARY,Population,Country); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ID BETWEEN 3001 AND 4000 AND Population > 600000
|
||||
@ -699,7 +701,7 @@ ID Name Country Population
|
||||
3808 Austin USA 656562
|
||||
3809 Baltimore USA 651154
|
||||
3810 Memphis USA 650100
|
||||
SET SESSION sort_buffer_size = 2048;
|
||||
SET SESSION sort_buffer_size = IF(@@version_compile_machine like '%64%', 2048, 1536);
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE
|
||||
Name LIKE 'C%' AND Population > 1000000;
|
||||
@ -712,14 +714,14 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Name Population,Name 4,35 NULL # Using sort_intersect(Population,Name); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
WHERE Name BETWEEN 'G' AND 'K' AND Population > 1000000 AND Country LIKE 'J%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Population,Country 4,3 NULL # Using sort_intersect(Population,Country); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Name BETWEEN 'G' AND 'J' AND Population > 500000 AND Country LIKE 'C%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Name,Population 35,4 NULL # Using sort_intersect(Name,Population); Using where
|
||||
1 SIMPLE City index_merge Population,Country,Name Name,Population,Country 35,4,3 NULL # Using sort_intersect(Name,Population,Country); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ID BETWEEN 1 AND 500 AND Population > 700000 AND Country LIKE 'C%';
|
||||
|
@ -215,7 +215,7 @@ alter table t2 add index i321(key3, key2, key1);
|
||||
explain select key3 from t2 where key1 = 100 or key2 = 100;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index_merge i1_3,i2_3 i1_3,i2_3 4,4 NULL 2 Using sort_union(i1_3,i2_3); Using where
|
||||
explain select key3 from t2 where key1 < 500 or key2 < 500;
|
||||
explain select key3 from t2 where key1 < 600 or key2 < 600;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index i1_3,i2_3 i321 12 NULL 1024 Using where; Using index
|
||||
explain select key7 from t2 where key1 <100 or key2 < 100;
|
||||
@ -1475,7 +1475,7 @@ EXPLAIN SELECT t1.f1 FROM t1
|
||||
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 system PRIMARY NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ref f2,f3 f2 5 const 2 Using where
|
||||
2 SUBQUERY t2 ref f2,f3 f3 2 const 2 Using index condition; Using where
|
||||
DROP TABLE t1,t2;
|
||||
create table t0 (a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
|
@ -57,12 +57,12 @@ count(*)
|
||||
3
|
||||
select * from information_schema.index_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ
|
||||
test just_a_test PRIMARY 5
|
||||
test just_a_test PRIMARY 4
|
||||
test just_a_test first_name 1
|
||||
test just_a_test state 2
|
||||
select * from information_schema.table_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
|
||||
test just_a_test 8 5 15
|
||||
test just_a_test 7 5 15
|
||||
drop table just_a_test;
|
||||
select * from information_schema.index_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ
|
||||
|
@ -1186,7 +1186,7 @@ EXPLAIN
|
||||
"key_length": "3070",
|
||||
"used_key_parts": ["f2", "pk1"],
|
||||
"rows": 1,
|
||||
"filtered": 50,
|
||||
"filtered": 100,
|
||||
"index_condition": "t1.pk1 <= 5 and t1.pk2 <= 5 and t1.f2 = 'abc'",
|
||||
"attached_condition": "t1.f1 <= '3'"
|
||||
}
|
||||
@ -1216,7 +1216,7 @@ EXPLAIN
|
||||
"key_length": "3011",
|
||||
"used_key_parts": ["pk1", "f2", "pk2"],
|
||||
"rows": 1,
|
||||
"filtered": 50,
|
||||
"filtered": 100,
|
||||
"index_condition": "t1.f2 <= 5 and t1.pk2 <= 5 and t1.pk1 = 'abc'",
|
||||
"attached_condition": "t1.f1 <= '3'"
|
||||
}
|
||||
|
@ -658,7 +658,7 @@ SELECT * FROM t1
|
||||
WHERE NOT(b = 'Texas') AND b BETWEEN 'wy' AND 'y' OR b = 'Pennsylvania'
|
||||
ORDER BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL b NULL NULL NULL # Using where; Using filesort
|
||||
1 SIMPLE t1 range b b 13 NULL # Using where; Rowid-ordered scan; Using filesort
|
||||
SELECT * FROM t1
|
||||
WHERE NOT(b = 'Texas') AND b BETWEEN 'wy' AND 'y' OR b = 'Pennsylvania'
|
||||
ORDER BY a;
|
||||
@ -670,7 +670,7 @@ SELECT * FROM t1
|
||||
WHERE NOT(b = 'Texas') AND b BETWEEN 'wy' AND 'y' OR b = 'Pennsylvania'
|
||||
ORDER BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL b NULL NULL NULL # Using where; Using filesort
|
||||
1 SIMPLE t1 range b b 13 NULL # Using index condition; Rowid-ordered scan; Using filesort
|
||||
SELECT * FROM t1
|
||||
WHERE NOT(b = 'Texas') AND b BETWEEN 'wy' AND 'y' OR b = 'Pennsylvania'
|
||||
ORDER BY a;
|
||||
@ -682,15 +682,17 @@ DROP TABLE t1;
|
||||
#
|
||||
CREATE TABLE t1 (b int NOT NULL, c int, a varchar(1024), PRIMARY KEY (b));
|
||||
INSERT INTO t1 VALUES (1,4,'Ill');
|
||||
insert into t1 select seq+100,5,seq from seq_1_to_100;
|
||||
CREATE TABLE t2 (a varchar(1024), KEY (a(512)));
|
||||
INSERT INTO t2 VALUES
|
||||
('Ill'), ('eckqzsflbzaffti'), ('w'), ('she'), ('gxbwypqtjzwywwer'), ('w');
|
||||
insert into t2 select seq from seq_1_to_100;
|
||||
SET SESSION optimizer_switch='index_condition_pushdown=off';
|
||||
EXPLAIN
|
||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||
HAVING t1.c != 5 ORDER BY t1.c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 Using where; Using filesort
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 101 Using where; Using filesort
|
||||
1 SIMPLE t2 ref a a 515 test.t1.a 1 Using where
|
||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||
HAVING t1.c != 5 ORDER BY t1.c;
|
||||
@ -701,7 +703,7 @@ EXPLAIN
|
||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||
HAVING t1.c != 5 ORDER BY t1.c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 Using where; Using filesort
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 101 Using where; Using filesort
|
||||
1 SIMPLE t2 ref a a 515 test.t1.a 1 Using where
|
||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||
HAVING t1.c != 5 ORDER BY t1.c;
|
||||
|
@ -1473,8 +1473,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE DU system dog_id NULL NULL NULL 1
|
||||
1 SIMPLE D system PRIMARY NULL NULL NULL 1
|
||||
1 SIMPLE DSAR system NULL NULL NULL NULL 1
|
||||
1 SIMPLE DT range t_id t_id 2 NULL 2 Using where
|
||||
1 SIMPLE DSA ref PRIMARY PRIMARY 8 const,test.DT.t_id,func 1 Using index
|
||||
1 SIMPLE DSA ref PRIMARY PRIMARY 4 const 3 Using where; Using index
|
||||
1 SIMPLE DT ALL t_id NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t5 DU, t1 D, t4 DT, t2 DSA, t3 DSAR
|
||||
WHERE DU.dog_id=D.dog_id AND D.dog_id=DT.dog_id AND D.birthday=DT.birthday AND
|
||||
DT.t_id=DSA.t_id AND DT.birthday=DSA.birthday AND DSA.dog_id=DSAR.dog_id;
|
||||
|
@ -5060,8 +5060,8 @@ EXPLAIN
|
||||
SELECT * FROM t1,t2
|
||||
WHERE t1.f1 = t2.f4 AND (t1.f3 = 1 AND t2.f3 = 4 OR t1.f3 = 2 AND t2.f3 = 6);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 2 Using where
|
||||
1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 Using where; Rowid-ordered scan
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 2 Using where; Rowid-ordered scan; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t1,t2
|
||||
WHERE t1.f1 = t2.f4 AND (t1.f3 = 1 AND t2.f3 = 4 OR t1.f3 = 2 AND t2.f3 = 6);
|
||||
f1 f3 f3 f2 f4
|
||||
@ -5070,8 +5070,8 @@ EXPLAIN
|
||||
SELECT * FROM t1,t2
|
||||
WHERE t1.f1 = t2.f4 AND (t1.f3 = 1 AND t2.f3 = 4 OR t1.f3 = 2 AND t2.f3 = 6);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 2 Using where
|
||||
1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Rowid-ordered scan
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Using where; Rowid-ordered scan; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t1,t2
|
||||
WHERE t1.f1 = t2.f4 AND (t1.f3 = 1 AND t2.f3 = 4 OR t1.f3 = 2 AND t2.f3 = 6);
|
||||
f1 f3 f3 f2 f4
|
||||
@ -6110,7 +6110,7 @@ EXPLAIN
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "a",
|
||||
"access_type": "index",
|
||||
"access_type": "range",
|
||||
"possible_keys": ["PRIMARY"],
|
||||
"key": "PRIMARY",
|
||||
"key_length": "4",
|
||||
|
@ -1284,9 +1284,9 @@ NULL 2 2
|
||||
DELETE FROM t3;
|
||||
EXPLAIN SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t3 const c NULL NULL NULL 1 Impossible ON condition
|
||||
1 SIMPLE t2 const b NULL NULL NULL 1 Impossible ON condition
|
||||
1 SIMPLE t1 index NULL a 5 NULL 21 Using index
|
||||
1 SIMPLE t3 index c c 5 NULL 0 Using where; Using index
|
||||
1 SIMPLE t2 ref b b 5 test.t3.c 2 Using index
|
||||
SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
|
||||
a b c
|
||||
NULL NULL NULL
|
||||
|
@ -1293,9 +1293,9 @@ NULL 2 2
|
||||
DELETE FROM t3;
|
||||
EXPLAIN SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t3 const c NULL NULL NULL 1 Impossible ON condition
|
||||
1 SIMPLE t2 const b NULL NULL NULL 1 Impossible ON condition
|
||||
1 SIMPLE t1 index NULL a 5 NULL 21 Using index
|
||||
1 SIMPLE t3 index c c 5 NULL 0 Using where; Using index
|
||||
1 SIMPLE t2 ref b b 5 test.t3.c 2 Using index
|
||||
SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
|
||||
a b c
|
||||
NULL NULL NULL
|
||||
@ -2034,7 +2034,7 @@ ON t6.b >= 2 AND t5.b=t7.b AND
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t5 ALL NULL NULL NULL NULL 3
|
||||
1 SIMPLE t7 ref|filter PRIMARY,b_i b_i|PRIMARY 5|4 test.t5.b 2 (29%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using rowid filter
|
||||
1 SIMPLE t6 range PRIMARY,b_i PRIMARY 4 NULL 3 Using where; Rowid-ordered scan; Using join buffer (incremental, BNL join)
|
||||
1 SIMPLE t6 range|filter PRIMARY,b_i PRIMARY|b_i 4|5 NULL 3 (86%) Using where; Rowid-ordered scan; Using join buffer (incremental, BNL join); Using rowid filter
|
||||
1 SIMPLE t8 ref b_i b_i 5 test.t5.b 2 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
|
||||
SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
|
||||
FROM t5
|
||||
|
@ -1740,7 +1740,7 @@ from t1,t2
|
||||
where t2.pk=t1.pk+1000 and t1.pk>1000
|
||||
group by t2.pk;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index PRIMARY PRIMARY 4 NULL 2 50.00 Using where; Using index; Using temporary; Using filesort
|
||||
1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 1 100.00 Using where; Using index; Using temporary; Using filesort
|
||||
1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 func 1 100.00 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t3 eq_ref PRIMARY PRIMARY 4 func 1 100.00 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t4 eq_ref PRIMARY PRIMARY 4 test.t3.pk 1 100.00 Using index
|
||||
@ -2272,11 +2272,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
explain select * from t1 left join t2 on t2.b is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 9
|
||||
1 SIMPLE t2 ref b b 5 const 780 Using where
|
||||
1 SIMPLE t2 ALL b NULL NULL NULL 1000 Using where
|
||||
explain select * from t1 left join t2 on t2.c is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 9
|
||||
1 SIMPLE t2 ref c c 5 const 393 Using where
|
||||
1 SIMPLE t2 ALL c NULL NULL NULL 1000 Using where
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-10006: optimizer doesn't convert outer join to inner on views with WHERE clause
|
||||
|
@ -8,13 +8,13 @@ EXPLAIN
|
||||
SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
|
||||
WHERE t1.name LIKE 'A%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY,name name 23 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY,name name 23 NULL 2 Using where; Using index
|
||||
1 SIMPLE t2 ref fkey fkey 5 test.t1.id 1 Using index
|
||||
EXPLAIN
|
||||
SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
|
||||
WHERE t1.name LIKE 'A%' OR FALSE;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY,name name 23 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY,name name 23 NULL 2 Using where; Using index
|
||||
1 SIMPLE t2 ref fkey fkey 5 test.t1.id 1 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
@ -433,47 +433,47 @@ left join t16 on t15.o1 = t16.p1
|
||||
where t1.a10 = 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL a4,a6,a5,a7 NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t2 ref PRIMARY PRIMARY 4 test.t1.a1 1 Using index
|
||||
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t2.b2 1 Using where; Using index
|
||||
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.a2 1 Using index
|
||||
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t4.d1 1 Using where
|
||||
1 SIMPLE t6 eq_ref PRIMARY PRIMARY 4 test.t1.a3 1 Using where; Using index
|
||||
1 SIMPLE t8 eq_ref PRIMARY PRIMARY 1 test.t1.a4 1 Using index
|
||||
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 1 test.t1.a7 1
|
||||
1 SIMPLE t9 ref PRIMARY PRIMARY 1 test.t1.a4 1
|
||||
1 SIMPLE t11 eq_ref PRIMARY PRIMARY 4 test.t1.a5 1
|
||||
1 SIMPLE t12 eq_ref PRIMARY PRIMARY 4 test.t11.k3 1 Using where
|
||||
1 SIMPLE l2 eq_ref PRIMARY PRIMARY 4 test.t11.k4 1 Using where
|
||||
1 SIMPLE t13 ref PRIMARY,m3 PRIMARY 4 test.t1.a1 1 Using where; Using index
|
||||
1 SIMPLE t2 ref PRIMARY PRIMARY 4 test.t1.a1 1 Using index
|
||||
1 SIMPLE t13 ref PRIMARY,m3 m3 8 const,test.t1.a1 1 Using index
|
||||
1 SIMPLE l4 eq_ref PRIMARY PRIMARY 4 test.t13.m2 1 Using where; Using index
|
||||
1 SIMPLE m2 ref PRIMARY,m3 PRIMARY 4 test.t1.a1 1 Using where; Using index
|
||||
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t2.b2 1 Using where; Using index
|
||||
1 SIMPLE t9 ref PRIMARY PRIMARY 1 test.t1.a4 1
|
||||
1 SIMPLE m2 ref PRIMARY,m3 m3 8 const,test.t1.a1 1 Using index
|
||||
1 SIMPLE l3 eq_ref PRIMARY PRIMARY 4 test.m2.m2 1 Using where
|
||||
1 SIMPLE t14 ALL PRIMARY NULL NULL NULL 4 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.a2 1 Using index
|
||||
1 SIMPLE t14 eq_ref PRIMARY PRIMARY 2 test.t1.a8 1 Using where
|
||||
1 SIMPLE t15 eq_ref PRIMARY PRIMARY 2 test.t1.a9 1 Using where; Using index
|
||||
1 SIMPLE t16 ref PRIMARY PRIMARY 2 test.t15.o1 1 Using where
|
||||
1 SIMPLE t10 ALL PRIMARY NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t4.d1 1 Using where
|
||||
1 SIMPLE t6 eq_ref PRIMARY PRIMARY 4 test.t1.a3 1 Using where; Using index
|
||||
explain select * from v1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL a4,a6,a5,a7 NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t2 ref PRIMARY PRIMARY 4 test.t1.a1 1 Using index
|
||||
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t2.b2 1 Using where; Using index
|
||||
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.a2 1 Using index
|
||||
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t4.d1 1 Using where
|
||||
1 SIMPLE t6 eq_ref PRIMARY PRIMARY 4 test.t1.a3 1 Using where; Using index
|
||||
1 SIMPLE t8 eq_ref PRIMARY PRIMARY 1 test.t1.a4 1 Using index
|
||||
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 1 test.t1.a7 1
|
||||
1 SIMPLE t9 ref PRIMARY PRIMARY 1 test.t1.a4 1
|
||||
1 SIMPLE t11 eq_ref PRIMARY PRIMARY 4 test.t1.a5 1
|
||||
1 SIMPLE t12 eq_ref PRIMARY PRIMARY 4 test.t11.k3 1 Using where
|
||||
1 SIMPLE l2 eq_ref PRIMARY PRIMARY 4 test.t11.k4 1 Using where
|
||||
1 SIMPLE t13 ref PRIMARY,m3 PRIMARY 4 test.t1.a1 1 Using where; Using index
|
||||
1 SIMPLE t2 ref PRIMARY PRIMARY 4 test.t1.a1 1 Using index
|
||||
1 SIMPLE t13 ref PRIMARY,m3 m3 8 const,test.t1.a1 1 Using index
|
||||
1 SIMPLE l4 eq_ref PRIMARY PRIMARY 4 test.t13.m2 1 Using where; Using index
|
||||
1 SIMPLE m2 ref PRIMARY,m3 PRIMARY 4 test.t1.a1 1 Using where; Using index
|
||||
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t2.b2 1 Using where; Using index
|
||||
1 SIMPLE t9 ref PRIMARY PRIMARY 1 test.t1.a4 1
|
||||
1 SIMPLE m2 ref PRIMARY,m3 m3 8 const,test.t1.a1 1 Using index
|
||||
1 SIMPLE l3 eq_ref PRIMARY PRIMARY 4 test.m2.m2 1 Using where
|
||||
1 SIMPLE t14 ALL PRIMARY NULL NULL NULL 4 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.a2 1 Using index
|
||||
1 SIMPLE t14 eq_ref PRIMARY PRIMARY 2 test.t1.a8 1 Using where
|
||||
1 SIMPLE t15 eq_ref PRIMARY PRIMARY 2 test.t1.a9 1 Using where; Using index
|
||||
1 SIMPLE t16 ref PRIMARY PRIMARY 2 test.t15.o1 1 Using where
|
||||
1 SIMPLE t10 ALL PRIMARY NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t4.d1 1 Using where
|
||||
1 SIMPLE t6 eq_ref PRIMARY PRIMARY 4 test.t1.a3 1 Using where; Using index
|
||||
drop view v1;
|
||||
drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16;
|
||||
#
|
||||
|
@ -1747,7 +1747,7 @@ from t1,t2
|
||||
where t2.pk=t1.pk+1000 and t1.pk>1000
|
||||
group by t2.pk;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index PRIMARY PRIMARY 4 NULL 2 50.00 Using where; Using index; Using temporary; Using filesort
|
||||
1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 1 100.00 Using where; Using index; Using temporary; Using filesort
|
||||
1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 func 1 100.00 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t3 eq_ref PRIMARY PRIMARY 4 func 1 100.00 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t4 eq_ref PRIMARY PRIMARY 4 test.t3.pk 1 100.00 Using index
|
||||
@ -2279,11 +2279,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
explain select * from t1 left join t2 on t2.b is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 9
|
||||
1 SIMPLE t2 ref b b 5 const 780 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 SIMPLE t2 ALL b NULL NULL NULL 1000 Using where; Using join buffer (flat, BNL join)
|
||||
explain select * from t1 left join t2 on t2.c is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 9
|
||||
1 SIMPLE t2 ref c c 5 const 393 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 SIMPLE t2 ALL c NULL NULL NULL 1000 Using where; Using join buffer (flat, BNL join)
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-10006: optimizer doesn't convert outer join to inner on views with WHERE clause
|
||||
|
@ -216,7 +216,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
|
||||
explain select 1 from t1 where id =2 or id=3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
explain select name from t1 where id =2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
|
||||
@ -611,7 +611,7 @@ 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 type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 range a a 5 NULL 2 Using where; Using index for group-by
|
||||
2 SUBQUERY t1 range a a 5 NULL 5 Using where; Using index
|
||||
SELECT 1 as RES FROM t1 AS t1_outer WHERE
|
||||
(SELECT max(b) FROM t1 GROUP BY a HAVING a < 2) > 12;
|
||||
RES
|
||||
|
@ -739,13 +739,13 @@ p
|
||||
1019
|
||||
explain select i from t2 where a='yyyy' and i=3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref k1,k2 k1 5 const 189 Using where
|
||||
1 SIMPLE t2 index_merge k1,k2 k1,k2 5,11 NULL 50 Using intersect(k1,k2); Using where; Using index
|
||||
select i from t2 where a='yyyy' and i=3;
|
||||
i
|
||||
3
|
||||
explain select a from t2 where a='yyyy' and i=3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref k1,k2 k1 5 const 189 Using where
|
||||
1 SIMPLE t2 index_merge k1,k2 k1,k2 5,11 NULL 50 Using intersect(k1,k2); Using where; Using index
|
||||
select a from t2 where a='yyyy' and i=3 ;
|
||||
a
|
||||
yyyy
|
||||
@ -753,7 +753,7 @@ select * from information_schema.key_caches where segment_number is null;
|
||||
KEY_CACHE_NAME SEGMENTS SEGMENT_NUMBER FULL_SIZE BLOCK_SIZE USED_BLOCKS UNUSED_BLOCKS DIRTY_BLOCKS READ_REQUESTS READS WRITE_REQUESTS WRITES
|
||||
default 2 NULL 32768 1024 # # 0 3172 24 1552 18
|
||||
small NULL NULL 1048576 1024 # # 0 0 0 0 0
|
||||
keycache1 7 NULL 262143 2048 # # 0 3201 43 1594 30
|
||||
keycache1 7 NULL 262143 2048 # # 0 3229 43 1594 30
|
||||
keycache2 NULL NULL 1048576 1024 # # 0 6 6 3 3
|
||||
set global keycache1.key_cache_block_size=2*1024;
|
||||
insert into t2 values (7000, 3, 'yyyy');
|
||||
|
@ -255,7 +255,7 @@ select * from t1i
|
||||
where c1 IN (select * from t2i where c2 > ' ')
|
||||
LIMIT ROWS EXAMINED 6;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1i index PRIMARY PRIMARY 2 NULL 4 Using where; Using index
|
||||
1 PRIMARY t1i range PRIMARY PRIMARY 2 NULL 4 Using where; Using index
|
||||
1 PRIMARY t2i eq_ref PRIMARY PRIMARY 2 test.t1i.c1 1 Using index
|
||||
select * from t1i
|
||||
where c1 IN (select * from t2i where c2 > ' ')
|
||||
@ -395,7 +395,7 @@ select * from t1i
|
||||
where c1 IN (select * from t2i where c2 > ' ') LIMIT ROWS EXAMINED 17;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1i index NULL PRIMARY 2 NULL 4 Using where; Using index
|
||||
2 MATERIALIZED t2i index PRIMARY PRIMARY 2 NULL 4 Using where; Using index
|
||||
2 MATERIALIZED t2i range PRIMARY PRIMARY 2 NULL 4 Using where; Using index
|
||||
select * from t1i
|
||||
where c1 IN (select * from t2i where c2 > ' ') LIMIT ROWS EXAMINED 17;
|
||||
c1
|
||||
|
@ -3091,12 +3091,11 @@ FLUSH STATUS;
|
||||
FLUSH TABLES;
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
1 PRIMARY <derived3> ref key0 key0 5 test.t1.a 2 100.00 FirstMatch(t1)
|
||||
3 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` semi join ((/* select#3 */ select `test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`b` limit 2,2) `x`) where 1
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` semi join ((/* select#3 */ select `test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`b` limit 2,2) `x`) where `x`.`b` = `test`.`t1`.`a`
|
||||
# Status of EXPLAIN EXTENDED "equivalent" SELECT query execution
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
@ -3105,7 +3104,7 @@ Warning 1287 '<select expression> INTO <destination>;' is deprecated and will be
|
||||
# Status of "equivalent" SELECT query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
Handler_read_rnd_next 10
|
||||
Handler_read_rnd_next 8
|
||||
Sort_priority_queue_sorts 1
|
||||
Sort_rows 3
|
||||
Sort_scan 1
|
||||
@ -3126,19 +3125,17 @@ Warnings:
|
||||
Warning 1287 '<select expression> INTO <destination>;' is deprecated and will be removed in a future release. Please use 'SELECT <select list> INTO <destination> FROM...' instead
|
||||
EXPLAIN UPDATE t1, t2 SET a = 10 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 PRIMARY <derived3> ref key0 key0 5 test.t1.a 2 FirstMatch(t1)
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3
|
||||
3 DERIVED t2 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
FLUSH STATUS;
|
||||
FLUSH TABLES;
|
||||
EXPLAIN EXTENDED UPDATE t1, t2 SET a = 10 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
1 PRIMARY <derived3> ref key0 key0 5 test.t1.a 2 100.00 FirstMatch(t1)
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
3 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
@ -3147,13 +3144,12 @@ FLUSH STATUS;
|
||||
FLUSH TABLES;
|
||||
EXPLAIN EXTENDED SELECT * FROM t1, t2 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
1 PRIMARY <derived3> ref key0 key0 5 test.t1.a 2 100.00 FirstMatch(t1)
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (flat, BNL join)
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
3 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` semi join ((/* select#3 */ select `test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`b` limit 2,2) `x`) join `test`.`t2` where 1
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` semi join ((/* select#3 */ select `test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`b` limit 2,2) `x`) join `test`.`t2` where `x`.`b` = `test`.`t1`.`a`
|
||||
# Status of EXPLAIN EXTENDED "equivalent" SELECT query execution
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
@ -3162,14 +3158,14 @@ Warning 1287 '<select expression> INTO <destination>;' is deprecated and will be
|
||||
# Status of "equivalent" SELECT query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
Handler_read_rnd_next 10
|
||||
Handler_read_rnd_next 8
|
||||
Sort_priority_queue_sorts 1
|
||||
Sort_rows 3
|
||||
Sort_scan 1
|
||||
# Status of testing query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
Handler_read_rnd_next 10
|
||||
Handler_read_rnd_next 8
|
||||
Sort_priority_queue_sorts 1
|
||||
Sort_rows 3
|
||||
Sort_scan 1
|
||||
@ -3182,20 +3178,18 @@ Warnings:
|
||||
Warning 1287 '<select expression> INTO <destination>;' is deprecated and will be removed in a future release. Please use 'SELECT <select list> INTO <destination> FROM...' instead
|
||||
EXPLAIN UPDATE t1, (SELECT * FROM t2) y SET a = 10 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 PRIMARY <derived4> ref key0 key0 5 test.t1.a 2 FirstMatch(t1)
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||
3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 3
|
||||
4 DERIVED t2 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
2 DERIVED t2 ALL NULL NULL NULL NULL 3
|
||||
FLUSH STATUS;
|
||||
FLUSH TABLES;
|
||||
EXPLAIN EXTENDED UPDATE t1, (SELECT * FROM t2) y SET a = 10 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
1 PRIMARY <derived4> ref key0 key0 5 test.t1.a 2 100.00 FirstMatch(t1)
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3 100.00
|
||||
3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 3 100.00
|
||||
4 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||
2 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
@ -3205,13 +3199,12 @@ FLUSH STATUS;
|
||||
FLUSH TABLES;
|
||||
EXPLAIN EXTENDED SELECT * FROM t1, (SELECT * FROM t2) y WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
1 PRIMARY <derived4> ref key0 key0 5 test.t1.a 2 100.00 FirstMatch(t1)
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 3 100.00
|
||||
4 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` semi join ((/* select#4 */ select `test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`b` limit 2,2) `x`) join `test`.`t2` where 1
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` semi join ((/* select#4 */ select `test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`b` limit 2,2) `x`) join `test`.`t2` where `x`.`b` = `test`.`t1`.`a`
|
||||
# Status of EXPLAIN EXTENDED "equivalent" SELECT query execution
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
@ -3220,14 +3213,14 @@ Warning 1287 '<select expression> INTO <destination>;' is deprecated and will be
|
||||
# Status of "equivalent" SELECT query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
Handler_read_rnd_next 10
|
||||
Handler_read_rnd_next 8
|
||||
Sort_priority_queue_sorts 1
|
||||
Sort_rows 3
|
||||
Sort_scan 1
|
||||
# Status of testing query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
Handler_read_rnd_next 10
|
||||
Handler_read_rnd_next 8
|
||||
Sort_priority_queue_sorts 1
|
||||
Sort_rows 3
|
||||
Sort_scan 1
|
||||
@ -3283,7 +3276,7 @@ FLUSH STATUS;
|
||||
FLUSH TABLES;
|
||||
EXPLAIN EXTENDED SELECT a t1 FROM t1 WHERE a>10;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 5 20.00 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `t1` from `test`.`t1` where `test`.`t1`.`a` > 10
|
||||
# Status of EXPLAIN EXTENDED "equivalent" SELECT query execution
|
||||
@ -3293,9 +3286,7 @@ Warnings:
|
||||
Warning 1287 '<select expression> INTO <destination>;' is deprecated and will be removed in a future release. Please use 'SELECT <select list> INTO <destination> FROM...' instead
|
||||
# Status of "equivalent" SELECT query execution:
|
||||
Variable_name Value
|
||||
Handler_read_first 1
|
||||
Handler_read_key 3
|
||||
Handler_read_next 5
|
||||
Handler_read_key 4
|
||||
# Status of testing query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
@ -3322,7 +3313,7 @@ FLUSH STATUS;
|
||||
FLUSH TABLES;
|
||||
EXPLAIN EXTENDED SELECT a t1 FROM t1 WHERE a>10 ORDER BY a+20;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 5 20.00 Using where; Using index; Using filesort
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 100.00 Using where; Using index; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `t1` from `test`.`t1` where `test`.`t1`.`a` > 10 order by `test`.`t1`.`a` + 20
|
||||
# Status of EXPLAIN EXTENDED "equivalent" SELECT query execution
|
||||
@ -3332,9 +3323,8 @@ Warnings:
|
||||
Warning 1287 '<select expression> INTO <destination>;' is deprecated and will be removed in a future release. Please use 'SELECT <select list> INTO <destination> FROM...' instead
|
||||
# Status of "equivalent" SELECT query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
Handler_read_rnd_next 6
|
||||
Sort_scan 1
|
||||
Handler_read_key 4
|
||||
Sort_range 1
|
||||
# Status of testing query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -407,7 +407,7 @@ WHERE (pk BETWEEN 4 AND 5 OR pk < 2) AND c1 < 240
|
||||
ORDER BY c1
|
||||
LIMIT 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY,k1 PRIMARY 4 NULL 3 Using index condition; Using where; Rowid-ordered scan; Using filesort
|
||||
1 SIMPLE t1 range|filter PRIMARY,k1 PRIMARY|k1 4|5 NULL 3 (50%) Using index condition; Using where; Rowid-ordered scan; Using filesort; Using rowid filter
|
||||
DROP TABLE t1;
|
||||
#
|
||||
#
|
||||
@ -506,7 +506,7 @@ WHERE (t2.pk <= 4 AND t1.pk IN (2,1)) OR
|
||||
(t1.pk > 1 AND t2.pk BETWEEN 6 AND 6);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 Using index condition; Rowid-ordered scan
|
||||
1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Using where; Rowid-ordered scan; Using join buffer (flat, BNL join)
|
||||
SELECT c2 FROM t1 JOIN t2 ON t1.c1 = t2.c1
|
||||
WHERE (t2.pk <= 4 AND t1.pk IN (2,1)) OR
|
||||
(t1.pk > 1 AND t2.pk BETWEEN 6 AND 6);
|
||||
@ -675,16 +675,18 @@ DROP TABLE t1;
|
||||
#
|
||||
CREATE TABLE t1 (b int NOT NULL, c int, a varchar(1024), PRIMARY KEY (b));
|
||||
INSERT INTO t1 VALUES (1,4,'Ill');
|
||||
insert into t1 select seq+100,5,seq from seq_1_to_100;
|
||||
CREATE TABLE t2 (a varchar(1024), KEY (a(512)));
|
||||
INSERT INTO t2 VALUES
|
||||
('Ill'), ('eckqzsflbzaffti'), ('w'), ('she'), ('gxbwypqtjzwywwer'), ('w');
|
||||
insert into t2 select seq from seq_1_to_100;
|
||||
SET SESSION optimizer_switch='index_condition_pushdown=off';
|
||||
EXPLAIN
|
||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||
HAVING t1.c != 5 ORDER BY t1.c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system PRIMARY NULL NULL NULL 1
|
||||
1 SIMPLE t2 ref a a 515 const 1 Using where
|
||||
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 101 Using where; Using filesort
|
||||
1 SIMPLE t2 ref a a 515 test.t1.a 10 Using where
|
||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||
HAVING t1.c != 5 ORDER BY t1.c;
|
||||
b c
|
||||
@ -694,8 +696,8 @@ EXPLAIN
|
||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||
HAVING t1.c != 5 ORDER BY t1.c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system PRIMARY NULL NULL NULL 1
|
||||
1 SIMPLE t2 ref a a 515 const 1 Using where
|
||||
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 101 Using where; Using filesort
|
||||
1 SIMPLE t2 ref a a 515 test.t1.a 10 Using where
|
||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||
HAVING t1.c != 5 ORDER BY t1.c;
|
||||
b c
|
||||
|
@ -4,7 +4,7 @@ insert into t1 values (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9),
|
||||
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
|
||||
explain select * from t1 where not(not(a));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 21 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 20 Using where; Using index
|
||||
select * from t1 where not(not(a));
|
||||
a
|
||||
1
|
||||
@ -55,7 +55,7 @@ a
|
||||
10
|
||||
explain select * from t1 where not(a = 10);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 21 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 19 Using where; Using index
|
||||
select * from t1 where not(a = 10);
|
||||
a
|
||||
0
|
||||
@ -145,7 +145,7 @@ a
|
||||
19
|
||||
explain select * from t1 where not(a is null);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 21 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 20 Using where; Using index
|
||||
select * from t1 where not(a is null);
|
||||
a
|
||||
0
|
||||
@ -192,7 +192,7 @@ a
|
||||
15
|
||||
explain select * from t1 where not(a < 15 and a > 5);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 21 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 11 Using where; Using index
|
||||
select * from t1 where not(a < 15 and a > 5);
|
||||
a
|
||||
0
|
||||
@ -208,7 +208,7 @@ a
|
||||
19
|
||||
explain select * from t1 where a = 2 or not(a < 10);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 21 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 11 Using where; Using index
|
||||
select * from t1 where a = 2 or not(a < 10);
|
||||
a
|
||||
2
|
||||
@ -255,7 +255,7 @@ a
|
||||
19
|
||||
explain select * from t1 where a = 2 or not(a < 5 or a > 15);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 21 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 12 Using where; Using index
|
||||
select * from t1 where a = 2 or not(a < 5 or a > 15);
|
||||
a
|
||||
2
|
||||
@ -272,7 +272,7 @@ a
|
||||
15
|
||||
explain select * from t1 where a = 7 or not(a < 15 and a > 5);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 21 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 12 Using where; Using index
|
||||
select * from t1 where a = 7 or not(a < 15 and a > 5);
|
||||
a
|
||||
0
|
||||
@ -289,7 +289,7 @@ a
|
||||
19
|
||||
explain select * from t1 where NULL or not(a < 15 and a > 5);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 21 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 11 Using where; Using index
|
||||
select * from t1 where NULL or not(a < 15 and a > 5);
|
||||
a
|
||||
0
|
||||
@ -500,7 +500,7 @@ NULL NULL
|
||||
3 1
|
||||
explain extended select a, not(not(a)), not(a <= 2 and not(a)), not(a not like "1"), not (a not in (1,2)), not(a != 2) from t1 where not(not(a)) having not(not(a));
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 5 80.00 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 4 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`a` <> 0 AS `not(not(a))`,`test`.`t1`.`a` > 2 or `test`.`t1`.`a` <> 0 AS `not(a <= 2 and not(a))`,`test`.`t1`.`a` like '1' AS `not(a not like "1")`,`test`.`t1`.`a` in (1,2) AS `not (a not in (1,2))`,`test`.`t1`.`a` = 2 AS `not(a != 2)` from `test`.`t1` where `test`.`t1`.`a` <> 0 having `test`.`t1`.`a` <> 0
|
||||
drop table t1;
|
||||
|
@ -20,7 +20,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a 9 NULL 12 Using where; Using index
|
||||
explain select * from t1 where (a is null or a > 0 and a < 2) and b < 5 limit 3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a,b a 9 NULL 12 Using where; Using index
|
||||
1 SIMPLE t1 range a,b a 9 NULL 2 Using where; Using index
|
||||
explain select * from t1 where (a is null or a = 7) and b=7;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref_or_null a,b a 9 const,const 2 Using where; Using index
|
||||
@ -32,7 +32,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref a,b a 5 const 3 Using where; Using index
|
||||
explain select * from t1 where a is null and b=9 or a is null and b=7 limit 3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref a,b a 5 const 2 Using where; Using index
|
||||
1 SIMPLE t1 range a,b a 9 NULL 3 Using where; Using index
|
||||
explain select * from t1 where a > 1 and a < 3 limit 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index
|
||||
@ -160,7 +160,7 @@ a b
|
||||
7 NULL
|
||||
explain select * from t1 where (a = 7 or a is null) and (b=7 or b is null);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref_or_null a,b a 5 const 4 Using where; Using index
|
||||
1 SIMPLE t1 ref_or_null a,b a 5 const 5 Using where; Using index
|
||||
select * from t1 where (a = 7 or a is null) and (b=7 or b is null);
|
||||
a b
|
||||
7 NULL
|
||||
@ -194,7 +194,7 @@ a a b
|
||||
explain select * from t2,t1 where t1.a=t2.a and (b= 7 or b is null);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
1 SIMPLE t1 ref_or_null a a 10 test.t2.a,const 4 Using where; Using index
|
||||
1 SIMPLE t1 ref_or_null a a 10 test.t2.a,const 5 Using where; Using index
|
||||
select * from t2,t1 where t1.a=t2.a and (b= 7 or b is null);
|
||||
a a b
|
||||
7 7 7
|
||||
@ -204,7 +204,7 @@ a a b
|
||||
explain select * from t2,t1 where (t1.a=t2.a or t1.a is null) and b= 7;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2
|
||||
1 SIMPLE t1 ref_or_null a a 10 test.t2.a,const 4 Using where; Using index
|
||||
1 SIMPLE t1 ref_or_null a a 10 test.t2.a,const 5 Using where; Using index
|
||||
select * from t2,t1 where (t1.a=t2.a or t1.a is null) and b= 7;
|
||||
a a b
|
||||
7 7 7
|
||||
@ -214,7 +214,7 @@ a a b
|
||||
explain select * from t2,t1 where (t1.a=t2.a or t1.a is null) and (b= 7 or b is null);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2
|
||||
1 SIMPLE t1 ref_or_null a a 5 test.t2.a 4 Using where; Using index
|
||||
1 SIMPLE t1 ref_or_null a a 5 test.t2.a 5 Using where; Using index
|
||||
select * from t2,t1 where (t1.a=t2.a or t1.a is null) and (b= 7 or b is null);
|
||||
a a b
|
||||
7 7 NULL
|
||||
@ -261,7 +261,7 @@ INSERT INTO t1 VALUES (11,5),(12,6),(13,7),(14,8),(15,9);
|
||||
INSERT INTO t2 VALUES (1,NULL),(2,NULL),(3,1),(4,2),(5,NULL),(6,NULL),(7,3),(8,4),(9,NULL),(10,NULL);
|
||||
explain select id from t1 where uniq_id is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1 idx1 5 const 6 Using index condition
|
||||
1 SIMPLE t1 ALL idx1 NULL NULL NULL 15 Using where
|
||||
explain select id from t1 where uniq_id =1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const idx1 idx1 5 const 1
|
||||
|
@ -1022,7 +1022,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
|
||||
"used_range_estimates": false,
|
||||
"cause": "not available",
|
||||
"rows": 1,
|
||||
"cost": 200,
|
||||
"cost": 200.06,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -1035,13 +1035,13 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
|
||||
"chosen_access_method": {
|
||||
"type": "ref",
|
||||
"records": 1,
|
||||
"cost": 200,
|
||||
"cost": 200.06,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 100,
|
||||
"cost_for_plan": 242.32,
|
||||
"cost_for_plan": 242.38,
|
||||
"estimated_join_cardinality": 100
|
||||
}
|
||||
]
|
||||
@ -1080,7 +1080,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
|
||||
"used_range_estimates": false,
|
||||
"cause": "not available",
|
||||
"rows": 1,
|
||||
"cost": 200,
|
||||
"cost": 200.06,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -1093,13 +1093,13 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
|
||||
"chosen_access_method": {
|
||||
"type": "ref",
|
||||
"records": 1,
|
||||
"cost": 200,
|
||||
"cost": 200.06,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 100,
|
||||
"cost_for_plan": 242.32,
|
||||
"cost_for_plan": 242.38,
|
||||
"pruned_by_cost": true
|
||||
}
|
||||
]
|
||||
@ -1199,8 +1199,9 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
|
||||
],
|
||||
"best_covering_index_scan": {
|
||||
"index": "a",
|
||||
"cost": 4812.5,
|
||||
"chosen": true
|
||||
"cost": 13377,
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
},
|
||||
"group_index_range": {
|
||||
"distinct_query": true,
|
||||
@ -1209,7 +1210,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
|
||||
"index": "a",
|
||||
"covering": true,
|
||||
"rows": 5,
|
||||
"cost": 6.75
|
||||
"cost": 6.25
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1221,7 +1222,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
|
||||
"max_aggregate": false,
|
||||
"distinct_aggregate": false,
|
||||
"rows": 5,
|
||||
"cost": 6.75,
|
||||
"cost": 6.25,
|
||||
"key_parts_used_for_access": ["a"],
|
||||
"ranges": [],
|
||||
"chosen": true
|
||||
@ -1235,12 +1236,12 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
|
||||
"max_aggregate": false,
|
||||
"distinct_aggregate": false,
|
||||
"rows": 5,
|
||||
"cost": 6.75,
|
||||
"cost": 6.25,
|
||||
"key_parts_used_for_access": ["a"],
|
||||
"ranges": []
|
||||
},
|
||||
"rows_for_plan": 5,
|
||||
"cost_for_plan": 6.75,
|
||||
"cost_for_plan": 6.25,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
@ -1257,20 +1258,20 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
|
||||
{
|
||||
"access_type": "index_merge",
|
||||
"resulting_rows": 5,
|
||||
"cost": 6.75,
|
||||
"cost": 6.25,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "index_merge",
|
||||
"records": 5,
|
||||
"cost": 6.75,
|
||||
"cost": 6.25,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 5,
|
||||
"cost_for_plan": 7.75,
|
||||
"cost_for_plan": 7.25,
|
||||
"estimated_join_cardinality": 5
|
||||
}
|
||||
]
|
||||
@ -1313,7 +1314,7 @@ test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a 20 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 range NULL a 20 NULL 8 Using where; Using index for group-by
|
||||
select * from information_schema.OPTIMIZER_TRACE;
|
||||
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
|
||||
EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
|
||||
@ -1372,7 +1373,7 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 7,
|
||||
"cost": 5.5291
|
||||
"cost": 5.4291
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -1383,7 +1384,7 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
|
||||
],
|
||||
"best_covering_index_scan": {
|
||||
"index": "a",
|
||||
"cost": 1.3869,
|
||||
"cost": 2.4092,
|
||||
"chosen": true
|
||||
},
|
||||
"setup_range_conditions": [],
|
||||
@ -1416,24 +1417,26 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
|
||||
"cost": 2.2,
|
||||
"key_parts_used_for_access": ["a", "b", "c"],
|
||||
"ranges": ["(2,3) <= (b,c) <= (2,3)"],
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
"chosen": true
|
||||
},
|
||||
"chosen_range_access_summary": {
|
||||
"range_access_plan": {
|
||||
"type": "index_group",
|
||||
"index": "a",
|
||||
"min_max_arg": "d",
|
||||
"min_aggregate": true,
|
||||
"max_aggregate": false,
|
||||
"distinct_aggregate": false,
|
||||
"rows": 8,
|
||||
"cost": 2.2,
|
||||
"key_parts_used_for_access": ["a", "b", "c"],
|
||||
"ranges": ["(2,3) <= (b,c) <= (2,3)"]
|
||||
},
|
||||
"rows_for_plan": 8,
|
||||
"cost_for_plan": 2.2,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"selectivity_for_indexes": [],
|
||||
"selectivity_for_columns": [
|
||||
{
|
||||
"column_name": "b",
|
||||
"selectivity_from_histogram": 0.2891
|
||||
},
|
||||
{
|
||||
"column_name": "c",
|
||||
"selectivity_from_histogram": 0.2891
|
||||
}
|
||||
],
|
||||
"cond_selectivity": 0.0836
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1445,24 +1448,24 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
|
||||
"best_access_path": {
|
||||
"considered_access_paths": [
|
||||
{
|
||||
"access_type": "scan",
|
||||
"resulting_rows": 0.5849,
|
||||
"cost": 3.3121,
|
||||
"access_type": "index_merge",
|
||||
"resulting_rows": 8,
|
||||
"cost": 2.2,
|
||||
"chosen": true,
|
||||
"use_tmp_table": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "scan",
|
||||
"records": 0.5849,
|
||||
"cost": 3.3121,
|
||||
"type": "index_merge",
|
||||
"records": 8,
|
||||
"cost": 2.2,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 0.5849,
|
||||
"cost_for_plan": 3.4291,
|
||||
"estimated_join_cardinality": 0.5849
|
||||
"rows_for_plan": 8,
|
||||
"cost_for_plan": 3.8,
|
||||
"estimated_join_cardinality": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1480,25 +1483,6 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"reconsidering_access_paths_for_index_ordering": {
|
||||
"clause": "GROUP BY",
|
||||
"fanout": 1,
|
||||
"read_time": 3.3131,
|
||||
"table": "t1",
|
||||
"rows_estimation": 7,
|
||||
"possible_keys": [
|
||||
{
|
||||
"index": "a",
|
||||
"can_resolve_order": true,
|
||||
"updated_limit": 7,
|
||||
"index_scan_time": 7,
|
||||
"records": 7,
|
||||
"chosen": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1524,7 +1508,7 @@ INSERT INTO t1 values (1,'2001-01-01'),(1,'2001-01-02'),
|
||||
set optimizer_trace='enabled=on';
|
||||
EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL id 8 NULL 16 Using where; Using index
|
||||
1 SIMPLE t1 range NULL id 8 NULL 9 Using where; Using index for group-by
|
||||
select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
||||
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
|
||||
EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
|
||||
@ -1583,7 +1567,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 16,
|
||||
"cost": 7.3313
|
||||
"cost": 7.2313
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -1594,7 +1578,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
|
||||
],
|
||||
"best_covering_index_scan": {
|
||||
"index": "id",
|
||||
"cost": 1.8468,
|
||||
"cost": 4.2117,
|
||||
"chosen": true
|
||||
},
|
||||
"setup_range_conditions": [],
|
||||
@ -1627,15 +1611,26 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
|
||||
"cost": 2.35,
|
||||
"key_parts_used_for_access": ["id"],
|
||||
"ranges": ["(2001-01-04) <= (a)"],
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
"chosen": true
|
||||
},
|
||||
"chosen_range_access_summary": {
|
||||
"range_access_plan": {
|
||||
"type": "index_group",
|
||||
"index": "id",
|
||||
"min_max_arg": "a",
|
||||
"min_aggregate": true,
|
||||
"max_aggregate": true,
|
||||
"distinct_aggregate": false,
|
||||
"rows": 9,
|
||||
"cost": 2.35,
|
||||
"key_parts_used_for_access": ["id"],
|
||||
"ranges": ["(2001-01-04) <= (a)"]
|
||||
},
|
||||
"rows_for_plan": 9,
|
||||
"cost_for_plan": 2.35,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"selectivity_for_indexes": [],
|
||||
"selectivity_for_columns": [],
|
||||
"cond_selectivity": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1647,24 +1642,24 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
|
||||
"best_access_path": {
|
||||
"considered_access_paths": [
|
||||
{
|
||||
"access_type": "scan",
|
||||
"resulting_rows": 16,
|
||||
"cost": 2.0312,
|
||||
"access_type": "index_merge",
|
||||
"resulting_rows": 9,
|
||||
"cost": 2.35,
|
||||
"chosen": true,
|
||||
"use_tmp_table": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "scan",
|
||||
"records": 16,
|
||||
"cost": 2.0312,
|
||||
"type": "index_merge",
|
||||
"records": 9,
|
||||
"cost": 2.35,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 16,
|
||||
"cost_for_plan": 5.2313,
|
||||
"estimated_join_cardinality": 16
|
||||
"rows_for_plan": 9,
|
||||
"cost_for_plan": 4.15,
|
||||
"estimated_join_cardinality": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1682,25 +1677,6 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"reconsidering_access_paths_for_index_ordering": {
|
||||
"clause": "GROUP BY",
|
||||
"fanout": 1,
|
||||
"read_time": 2.0322,
|
||||
"table": "t1",
|
||||
"rows_estimation": 9,
|
||||
"possible_keys": [
|
||||
{
|
||||
"index": "id",
|
||||
"can_resolve_order": true,
|
||||
"updated_limit": 16,
|
||||
"index_scan_time": 16,
|
||||
"records": 16,
|
||||
"chosen": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1715,7 +1691,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
|
||||
} 0 0
|
||||
EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL id 8 NULL 16 Using where; Using index
|
||||
1 SIMPLE t1 range NULL id 8 NULL 9 Using where; Using index for group-by
|
||||
select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
|
||||
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
|
||||
EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
|
||||
@ -1774,7 +1750,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 16,
|
||||
"cost": 7.3313
|
||||
"cost": 7.2313
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -1785,7 +1761,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
|
||||
],
|
||||
"best_covering_index_scan": {
|
||||
"index": "id",
|
||||
"cost": 1.8468,
|
||||
"cost": 4.2117,
|
||||
"chosen": true
|
||||
},
|
||||
"setup_range_conditions": [],
|
||||
@ -1818,15 +1794,26 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
|
||||
"cost": 2.35,
|
||||
"key_parts_used_for_access": ["id", "a"],
|
||||
"ranges": ["(2001-01-04) <= (a) <= (2001-01-04)"],
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
"chosen": true
|
||||
},
|
||||
"chosen_range_access_summary": {
|
||||
"range_access_plan": {
|
||||
"type": "index_group",
|
||||
"index": "id",
|
||||
"min_max_arg": null,
|
||||
"min_aggregate": false,
|
||||
"max_aggregate": false,
|
||||
"distinct_aggregate": false,
|
||||
"rows": 9,
|
||||
"cost": 2.35,
|
||||
"key_parts_used_for_access": ["id", "a"],
|
||||
"ranges": ["(2001-01-04) <= (a) <= (2001-01-04)"]
|
||||
},
|
||||
"rows_for_plan": 9,
|
||||
"cost_for_plan": 2.35,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"selectivity_for_indexes": [],
|
||||
"selectivity_for_columns": [],
|
||||
"cond_selectivity": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1838,24 +1825,24 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
|
||||
"best_access_path": {
|
||||
"considered_access_paths": [
|
||||
{
|
||||
"access_type": "scan",
|
||||
"resulting_rows": 16,
|
||||
"cost": 2.0312,
|
||||
"access_type": "index_merge",
|
||||
"resulting_rows": 9,
|
||||
"cost": 2.35,
|
||||
"chosen": true,
|
||||
"use_tmp_table": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "scan",
|
||||
"records": 16,
|
||||
"cost": 2.0312,
|
||||
"type": "index_merge",
|
||||
"records": 9,
|
||||
"cost": 2.35,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 16,
|
||||
"cost_for_plan": 5.2313,
|
||||
"estimated_join_cardinality": 16
|
||||
"rows_for_plan": 9,
|
||||
"cost_for_plan": 4.15,
|
||||
"estimated_join_cardinality": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1873,25 +1860,6 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"reconsidering_access_paths_for_index_ordering": {
|
||||
"clause": "GROUP BY",
|
||||
"fanout": 1,
|
||||
"read_time": 2.0322,
|
||||
"table": "t1",
|
||||
"rows_estimation": 9,
|
||||
"possible_keys": [
|
||||
{
|
||||
"index": "id",
|
||||
"can_resolve_order": true,
|
||||
"updated_limit": 16,
|
||||
"index_scan_time": 16,
|
||||
"records": 16,
|
||||
"chosen": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -2011,7 +1979,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 1000,
|
||||
"cost": 232.66
|
||||
"cost": 232.56
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -2040,7 +2008,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 180,
|
||||
"cost": 229.72,
|
||||
"cost": 216.29,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -2050,7 +2018,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 21,
|
||||
"cost": 27.445,
|
||||
"cost": 25.362,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -2071,7 +2039,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"ranges": ["(1,2) <= (a,b) <= (1,2)"]
|
||||
},
|
||||
"rows_for_plan": 21,
|
||||
"cost_for_plan": 27.445,
|
||||
"cost_for_plan": 25.362,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
@ -2109,7 +2077,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"index": "a_c",
|
||||
"used_range_estimates": true,
|
||||
"rows": 180,
|
||||
"cost": 92,
|
||||
"cost": 180.27,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -2117,7 +2085,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"index": "a_b",
|
||||
"used_range_estimates": true,
|
||||
"rows": 21,
|
||||
"cost": 22,
|
||||
"cost": 21.142,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -2129,13 +2097,13 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"chosen_access_method": {
|
||||
"type": "ref",
|
||||
"records": 21,
|
||||
"cost": 22,
|
||||
"cost": 21.142,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 21,
|
||||
"cost_for_plan": 26.2,
|
||||
"cost_for_plan": 25.342,
|
||||
"estimated_join_cardinality": 21
|
||||
}
|
||||
]
|
||||
@ -2159,7 +2127,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"reconsidering_access_paths_for_index_ordering": {
|
||||
"clause": "ORDER BY",
|
||||
"fanout": 1,
|
||||
"read_time": 22.001,
|
||||
"read_time": 21.143,
|
||||
"table": "t1",
|
||||
"rows_estimation": 21,
|
||||
"possible_keys": [
|
||||
@ -2175,8 +2143,8 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"index": "a_c",
|
||||
"can_resolve_order": true,
|
||||
"updated_limit": 47,
|
||||
"range_scan_time": 4.324,
|
||||
"index_scan_time": 4.324,
|
||||
"range_scan_time": 4.331,
|
||||
"index_scan_time": 4.331,
|
||||
"records": 180,
|
||||
"chosen": true
|
||||
},
|
||||
@ -2222,7 +2190,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 180,
|
||||
"cost": 229.72,
|
||||
"cost": 216.29,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -2243,7 +2211,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"ranges": ["(1) <= (a) <= (1)"]
|
||||
},
|
||||
"rows_for_plan": 180,
|
||||
"cost_for_plan": 229.72,
|
||||
"cost_for_plan": 216.29,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
@ -3174,7 +3142,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 10,
|
||||
"cost": 6.1317
|
||||
"cost": 6.0317
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -3195,7 +3163,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
],
|
||||
"best_covering_index_scan": {
|
||||
"index": "pk_a_b",
|
||||
"cost": 1.5429,
|
||||
"cost": 3.0107,
|
||||
"chosen": true
|
||||
},
|
||||
"setup_range_conditions": [],
|
||||
@ -3208,9 +3176,8 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.3773,
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
"cost": 1.3456,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
"index": "pk_a",
|
||||
@ -3219,7 +3186,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.3783,
|
||||
"cost": 1.3458,
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
},
|
||||
@ -3230,7 +3197,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 1,
|
||||
"cost": 1.1793,
|
||||
"cost": 0.3461,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -3238,10 +3205,10 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"intersecting_indexes": [
|
||||
{
|
||||
"index": "pk",
|
||||
"index_scan_cost": 1.0023,
|
||||
"cumulated_index_scan_cost": 1.0023,
|
||||
"index_scan_cost": 1.0006,
|
||||
"cumulated_index_scan_cost": 1.0006,
|
||||
"disk_sweep_cost": 0.9008,
|
||||
"cumulative_total_cost": 1.9031,
|
||||
"cumulative_total_cost": 1.9014,
|
||||
"usable": true,
|
||||
"matching_rows_now": 1,
|
||||
"intersect_covering_with_this_index": false,
|
||||
@ -3279,7 +3246,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"ranges": ["(2,5,1) <= (pk,a,b) <= (2,5,1)"]
|
||||
},
|
||||
"rows_for_plan": 1,
|
||||
"cost_for_plan": 1.1793,
|
||||
"cost_for_plan": 0.3461,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
@ -3317,7 +3284,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"index": "pk",
|
||||
"used_range_estimates": true,
|
||||
"rows": 1,
|
||||
"cost": 2,
|
||||
"cost": 1.1256,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -3325,7 +3292,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"index": "pk_a",
|
||||
"used_range_estimates": true,
|
||||
"rows": 1,
|
||||
"cost": 2,
|
||||
"cost": 1.1258,
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
},
|
||||
@ -3334,7 +3301,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"index": "pk_a_b",
|
||||
"used_range_estimates": true,
|
||||
"rows": 1,
|
||||
"cost": 1.0043,
|
||||
"cost": 0.1261,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -3346,13 +3313,13 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"chosen_access_method": {
|
||||
"type": "ref",
|
||||
"records": 1,
|
||||
"cost": 1.0043,
|
||||
"cost": 0.1261,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 1,
|
||||
"cost_for_plan": 1.2043,
|
||||
"cost_for_plan": 0.3261,
|
||||
"estimated_join_cardinality": 1
|
||||
}
|
||||
]
|
||||
@ -3671,7 +3638,7 @@ explain delete from t0 where t0.a<3 {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 10,
|
||||
"cost": 6.122
|
||||
"cost": 6.022
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -3690,7 +3657,7 @@ explain delete from t0 where t0.a<3 {
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 3,
|
||||
"cost": 5.007,
|
||||
"cost": 3.7468,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -3708,7 +3675,7 @@ explain delete from t0 where t0.a<3 {
|
||||
"ranges": ["(NULL) < (a) < (3)"]
|
||||
},
|
||||
"rows_for_plan": 3,
|
||||
"cost_for_plan": 5.007,
|
||||
"cost_for_plan": 3.7468,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
@ -3809,7 +3776,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 10,
|
||||
"cost": 6.122
|
||||
"cost": 6.022
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -3820,7 +3787,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
],
|
||||
"best_covering_index_scan": {
|
||||
"index": "a",
|
||||
"cost": 1.5234,
|
||||
"cost": 3.0059,
|
||||
"chosen": true
|
||||
},
|
||||
"setup_range_conditions": [],
|
||||
@ -3833,7 +3800,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 3,
|
||||
"cost": 1.407,
|
||||
"cost": 0.7468,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -3854,7 +3821,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"ranges": ["(NULL) < (a) < (3)"]
|
||||
},
|
||||
"rows_for_plan": 3,
|
||||
"cost_for_plan": 1.407,
|
||||
"cost_for_plan": 0.7468,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
@ -3874,7 +3841,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 10,
|
||||
"cost": 6.122
|
||||
"cost": 6.022
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -3885,7 +3852,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
],
|
||||
"best_covering_index_scan": {
|
||||
"index": "a",
|
||||
"cost": 1.5234,
|
||||
"cost": 3.0059,
|
||||
"chosen": true
|
||||
},
|
||||
"setup_range_conditions": [],
|
||||
@ -3898,7 +3865,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 3,
|
||||
"cost": 1.407,
|
||||
"cost": 0.7468,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -3919,7 +3886,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"ranges": ["(NULL) < (a) < (3)"]
|
||||
},
|
||||
"rows_for_plan": 3,
|
||||
"cost_for_plan": 1.407,
|
||||
"cost_for_plan": 0.7468,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
@ -3946,20 +3913,20 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
{
|
||||
"access_type": "range",
|
||||
"resulting_rows": 3,
|
||||
"cost": 1.407,
|
||||
"cost": 0.7468,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "range",
|
||||
"records": 3,
|
||||
"cost": 1.407,
|
||||
"cost": 0.7468,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 3,
|
||||
"cost_for_plan": 2.007,
|
||||
"cost_for_plan": 1.3468,
|
||||
"rest_of_plan": [
|
||||
{
|
||||
"plan_prefix": ["t0"],
|
||||
@ -3972,7 +3939,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"used_range_estimates": false,
|
||||
"cause": "not better than ref estimates",
|
||||
"rows": 1,
|
||||
"cost": 3.007,
|
||||
"cost": 3.0018,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -3984,13 +3951,13 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"chosen_access_method": {
|
||||
"type": "ref",
|
||||
"records": 1,
|
||||
"cost": 3.007,
|
||||
"cost": 3.0018,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 3,
|
||||
"cost_for_plan": 5.614,
|
||||
"cost_for_plan": 4.9485,
|
||||
"estimated_join_cardinality": 3
|
||||
}
|
||||
]
|
||||
@ -4003,20 +3970,20 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
{
|
||||
"access_type": "range",
|
||||
"resulting_rows": 3,
|
||||
"cost": 1.407,
|
||||
"cost": 0.7468,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "range",
|
||||
"records": 3,
|
||||
"cost": 1.407,
|
||||
"cost": 0.7468,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 3,
|
||||
"cost_for_plan": 2.007,
|
||||
"cost_for_plan": 1.3468,
|
||||
"rest_of_plan": [
|
||||
{
|
||||
"plan_prefix": ["t1"],
|
||||
@ -4029,7 +3996,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"used_range_estimates": false,
|
||||
"cause": "not better than ref estimates",
|
||||
"rows": 2,
|
||||
"cost": 3.014,
|
||||
"cost": 3.0035,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -4041,13 +4008,13 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"chosen_access_method": {
|
||||
"type": "ref",
|
||||
"records": 2,
|
||||
"cost": 3.014,
|
||||
"cost": 3.0035,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 6,
|
||||
"cost_for_plan": 6.2211,
|
||||
"cost_for_plan": 5.5503,
|
||||
"pruned_by_cost": true
|
||||
}
|
||||
]
|
||||
@ -7534,7 +7501,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 1,
|
||||
"cost": 1.1783,
|
||||
"cost": 0.3458,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7568,7 +7535,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 107,
|
||||
"cost": 8.9549,
|
||||
"cost": 21.634,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7605,7 +7572,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1000,
|
||||
"cost": 1273.2,
|
||||
"cost": 1203.9,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7650,7 +7617,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 4,
|
||||
"cost": 6.2648,
|
||||
"cost": 4.9487,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7689,7 +7656,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.3797,
|
||||
"cost": 1.3462,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7723,7 +7690,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.3797,
|
||||
"cost": 1.3462,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7765,7 +7732,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.3787,
|
||||
"cost": 1.3459,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7800,7 +7767,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.3785,
|
||||
"cost": 1.3459,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7835,7 +7802,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.3787,
|
||||
"cost": 1.3459,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7873,7 +7840,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.3785,
|
||||
"cost": 1.3459,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7914,7 +7881,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 3.5719,
|
||||
"cost": 1.3943,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -7953,7 +7920,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 2,
|
||||
"cost": 3.6324,
|
||||
"cost": 2.5469,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -8009,7 +7976,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1000,
|
||||
"cost": 1273.2,
|
||||
"cost": 1203.9,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -8218,7 +8185,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
|
||||
"used_range_estimates": false,
|
||||
"cause": "not available",
|
||||
"rows": 1,
|
||||
"cost": 20,
|
||||
"cost": 20.006,
|
||||
"chosen": true
|
||||
},
|
||||
|
||||
@ -8233,13 +8200,13 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
|
||||
{
|
||||
"type": "ref",
|
||||
"records": 1,
|
||||
"cost": 20,
|
||||
"cost": 20.006,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 10,
|
||||
"cost_for_plan": 26.017,
|
||||
"cost_for_plan": 26.023,
|
||||
"selectivity": 0.8047,
|
||||
"estimated_join_cardinality": 8.0469
|
||||
}
|
||||
@ -8307,7 +8274,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.4265,
|
||||
"cost": 1.3579,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
|
@ -73,7 +73,7 @@ explain select * from t1 where a=1 or b=1 {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 1000,
|
||||
"cost": 231.69
|
||||
"cost": 231.59
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -111,12 +111,12 @@ explain select * from t1 where a=1 or b=1 {
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 1,
|
||||
"cost": 1.1773,
|
||||
"cost": 0.3456,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"index_to_merge": "a",
|
||||
"cumulated_cost": 1.1773
|
||||
"cumulated_cost": 0.3456
|
||||
},
|
||||
{
|
||||
"range_scan_alternatives": [
|
||||
@ -127,15 +127,15 @@ explain select * from t1 where a=1 or b=1 {
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 1,
|
||||
"cost": 1.1773,
|
||||
"cost": 0.3456,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"index_to_merge": "b",
|
||||
"cumulated_cost": 2.3547
|
||||
"cumulated_cost": 0.6912
|
||||
}
|
||||
],
|
||||
"cost_of_reading_ranges": 2.3547,
|
||||
"cost_of_reading_ranges": 0.6912,
|
||||
"use_roworder_union": true,
|
||||
"cause": "always cheaper than non roworder retrieval",
|
||||
"analyzing_roworder_scans": [
|
||||
@ -158,7 +158,7 @@ explain select * from t1 where a=1 or b=1 {
|
||||
}
|
||||
}
|
||||
],
|
||||
"index_roworder_union_cost": 4.1484,
|
||||
"index_roworder_union_cost": 2.4849,
|
||||
"members": 2,
|
||||
"chosen": true
|
||||
}
|
||||
@ -187,7 +187,7 @@ explain select * from t1 where a=1 or b=1 {
|
||||
]
|
||||
},
|
||||
"rows_for_plan": 2,
|
||||
"cost_for_plan": 4.1484,
|
||||
"cost_for_plan": 2.4849,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
@ -209,20 +209,20 @@ explain select * from t1 where a=1 or b=1 {
|
||||
{
|
||||
"access_type": "index_merge",
|
||||
"resulting_rows": 2,
|
||||
"cost": 4.1484,
|
||||
"cost": 2.4849,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "index_merge",
|
||||
"records": 2,
|
||||
"cost": 4.1484,
|
||||
"cost": 2.4849,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 2,
|
||||
"cost_for_plan": 4.5484,
|
||||
"cost_for_plan": 2.8849,
|
||||
"estimated_join_cardinality": 2
|
||||
}
|
||||
]
|
||||
@ -323,7 +323,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 2243,
|
||||
"cost": 2844.1,
|
||||
"cost": 2700.1,
|
||||
"chosen": true
|
||||
},
|
||||
|
||||
@ -337,7 +337,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 2243,
|
||||
"cost": 2844.1,
|
||||
"cost": 2700.1,
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
},
|
||||
@ -352,7 +352,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 2243,
|
||||
"cost": 2844.1,
|
||||
"cost": 2700.1,
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
}
|
||||
@ -364,10 +364,10 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
|
||||
{
|
||||
"index": "key1",
|
||||
"index_scan_cost": 58.252,
|
||||
"cumulated_index_scan_cost": 58.252,
|
||||
"index_scan_cost": 10.314,
|
||||
"cumulated_index_scan_cost": 10.314,
|
||||
"disk_sweep_cost": 1923.1,
|
||||
"cumulative_total_cost": 1981.4,
|
||||
"cumulative_total_cost": 1933.5,
|
||||
"usable": true,
|
||||
"matching_rows_now": 2243,
|
||||
"intersect_covering_with_this_index": false,
|
||||
@ -376,10 +376,10 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
|
||||
{
|
||||
"index": "key2",
|
||||
"index_scan_cost": 58.252,
|
||||
"cumulated_index_scan_cost": 116.5,
|
||||
"index_scan_cost": 10.314,
|
||||
"cumulated_index_scan_cost": 20.628,
|
||||
"disk_sweep_cost": 84.518,
|
||||
"cumulative_total_cost": 201.02,
|
||||
"cumulative_total_cost": 105.15,
|
||||
"usable": true,
|
||||
"matching_rows_now": 77.636,
|
||||
"intersect_covering_with_this_index": false,
|
||||
@ -388,10 +388,10 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
|
||||
{
|
||||
"index": "key3",
|
||||
"index_scan_cost": 58.252,
|
||||
"cumulated_index_scan_cost": 174.76,
|
||||
"index_scan_cost": 10.314,
|
||||
"cumulated_index_scan_cost": 30.942,
|
||||
"disk_sweep_cost": 0,
|
||||
"cumulative_total_cost": 174.76,
|
||||
"cumulative_total_cost": 30.942,
|
||||
"usable": true,
|
||||
"matching_rows_now": 2.6872,
|
||||
"intersect_covering_with_this_index": true,
|
||||
@ -404,7 +404,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"cause": "no clustered pk index"
|
||||
},
|
||||
"rows": 2,
|
||||
"cost": 174.76,
|
||||
"cost": 30.942,
|
||||
"covering": true,
|
||||
"chosen": true
|
||||
},
|
||||
@ -422,7 +422,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.chosen_range_access_summary'))
|
||||
{
|
||||
"type": "index_roworder_intersect",
|
||||
"rows": 2,
|
||||
"cost": 174.76,
|
||||
"cost": 30.942,
|
||||
"covering": true,
|
||||
"clustered_pk_scan": false,
|
||||
"intersect_of":
|
||||
@ -460,7 +460,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.chosen_range_access_summary'))
|
||||
]
|
||||
},
|
||||
"rows_for_plan": 2,
|
||||
"cost_for_plan": 174.76,
|
||||
"cost_for_plan": 30.942,
|
||||
"chosen": true
|
||||
}
|
||||
]
|
||||
@ -501,7 +501,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 2243,
|
||||
"cost": 152.53,
|
||||
"cost": 457.06,
|
||||
"chosen": true
|
||||
},
|
||||
|
||||
@ -515,13 +515,13 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 2243,
|
||||
"cost": 152.53,
|
||||
"cost": 457.06,
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
}
|
||||
],
|
||||
"index_to_merge": "key1",
|
||||
"cumulated_cost": 152.53
|
||||
"cumulated_cost": 457.06
|
||||
},
|
||||
|
||||
{
|
||||
@ -538,7 +538,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 2243,
|
||||
"cost": 152.53,
|
||||
"cost": 457.06,
|
||||
"chosen": true
|
||||
},
|
||||
|
||||
@ -552,16 +552,16 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": true,
|
||||
"rows": 2243,
|
||||
"cost": 152.53,
|
||||
"cost": 457.06,
|
||||
"chosen": false,
|
||||
"cause": "cost"
|
||||
}
|
||||
],
|
||||
"index_to_merge": "key3",
|
||||
"cumulated_cost": 305.05
|
||||
"cumulated_cost": 914.12
|
||||
}
|
||||
],
|
||||
"cost_of_reading_ranges": 305.05,
|
||||
"cost_of_reading_ranges": 914.12,
|
||||
"use_roworder_union": true,
|
||||
"cause": "always cheaper than non roworder retrieval",
|
||||
"analyzing_roworder_scans":
|
||||
@ -582,10 +582,10 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
|
||||
{
|
||||
"index": "key1",
|
||||
"index_scan_cost": 58.252,
|
||||
"cumulated_index_scan_cost": 58.252,
|
||||
"index_scan_cost": 10.314,
|
||||
"cumulated_index_scan_cost": 10.314,
|
||||
"disk_sweep_cost": 1923.1,
|
||||
"cumulative_total_cost": 1981.4,
|
||||
"cumulative_total_cost": 1933.5,
|
||||
"usable": true,
|
||||
"matching_rows_now": 2243,
|
||||
"intersect_covering_with_this_index": false,
|
||||
@ -594,10 +594,10 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
|
||||
{
|
||||
"index": "key2",
|
||||
"index_scan_cost": 58.252,
|
||||
"cumulated_index_scan_cost": 116.5,
|
||||
"index_scan_cost": 10.314,
|
||||
"cumulated_index_scan_cost": 20.628,
|
||||
"disk_sweep_cost": 84.518,
|
||||
"cumulative_total_cost": 201.02,
|
||||
"cumulative_total_cost": 105.15,
|
||||
"usable": true,
|
||||
"matching_rows_now": 77.636,
|
||||
"intersect_covering_with_this_index": false,
|
||||
@ -610,7 +610,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"cause": "no clustered pk index"
|
||||
},
|
||||
"rows": 77,
|
||||
"cost": 201.02,
|
||||
"cost": 105.15,
|
||||
"covering": false,
|
||||
"chosen": true
|
||||
}
|
||||
@ -631,10 +631,10 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
|
||||
{
|
||||
"index": "key3",
|
||||
"index_scan_cost": 58.252,
|
||||
"cumulated_index_scan_cost": 58.252,
|
||||
"index_scan_cost": 10.314,
|
||||
"cumulated_index_scan_cost": 10.314,
|
||||
"disk_sweep_cost": 1923.1,
|
||||
"cumulative_total_cost": 1981.4,
|
||||
"cumulative_total_cost": 1933.5,
|
||||
"usable": true,
|
||||
"matching_rows_now": 2243,
|
||||
"intersect_covering_with_this_index": false,
|
||||
@ -643,10 +643,10 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
|
||||
{
|
||||
"index": "key4",
|
||||
"index_scan_cost": 58.252,
|
||||
"cumulated_index_scan_cost": 116.5,
|
||||
"index_scan_cost": 10.314,
|
||||
"cumulated_index_scan_cost": 20.628,
|
||||
"disk_sweep_cost": 84.518,
|
||||
"cumulative_total_cost": 201.02,
|
||||
"cumulative_total_cost": 105.15,
|
||||
"usable": true,
|
||||
"matching_rows_now": 77.636,
|
||||
"intersect_covering_with_this_index": false,
|
||||
@ -659,13 +659,13 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"cause": "no clustered pk index"
|
||||
},
|
||||
"rows": 77,
|
||||
"cost": 201.02,
|
||||
"cost": 105.15,
|
||||
"covering": false,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"index_roworder_union_cost": 386.73,
|
||||
"index_roworder_union_cost": 194.98,
|
||||
"members": 2,
|
||||
"chosen": true
|
||||
}
|
||||
@ -686,7 +686,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.chosen_range_access_summary'))
|
||||
{
|
||||
"type": "index_roworder_intersect",
|
||||
"rows": 77,
|
||||
"cost": 201.02,
|
||||
"cost": 105.15,
|
||||
"covering": false,
|
||||
"clustered_pk_scan": false,
|
||||
"intersect_of":
|
||||
@ -717,7 +717,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.chosen_range_access_summary'))
|
||||
{
|
||||
"type": "index_roworder_intersect",
|
||||
"rows": 77,
|
||||
"cost": 201.02,
|
||||
"cost": 105.15,
|
||||
"covering": false,
|
||||
"clustered_pk_scan": false,
|
||||
"intersect_of":
|
||||
@ -747,7 +747,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.chosen_range_access_summary'))
|
||||
]
|
||||
},
|
||||
"rows_for_plan": 154,
|
||||
"cost_for_plan": 386.73,
|
||||
"cost_for_plan": 194.98,
|
||||
"chosen": true
|
||||
}
|
||||
]
|
||||
|
@ -88,7 +88,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
|
||||
"range_analysis": {
|
||||
"table_scan": {
|
||||
"rows": 1000,
|
||||
"cost": 206.1
|
||||
"cost": 206
|
||||
},
|
||||
"potential_range_indexes": [
|
||||
{
|
||||
@ -117,7 +117,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1000,
|
||||
"cost": 203.39,
|
||||
"cost": 201.65,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -127,7 +127,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 1,
|
||||
"cost": 2.3751,
|
||||
"cost": 1.3451,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
@ -150,7 +150,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
|
||||
"cause": "cost"
|
||||
},
|
||||
"chosen": false,
|
||||
"cause": "too few indexes to merge"
|
||||
"cause": "cost"
|
||||
},
|
||||
"analyzing_index_merge_union": []
|
||||
},
|
||||
@ -166,7 +166,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
|
||||
"ranges": ["(1) <= (key1) <= (1)"]
|
||||
},
|
||||
"rows_for_plan": 1,
|
||||
"cost_for_plan": 2.3751,
|
||||
"cost_for_plan": 1.3451,
|
||||
"chosen": true
|
||||
}
|
||||
}
|
||||
@ -199,7 +199,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
|
||||
"index": "key1",
|
||||
"used_range_estimates": true,
|
||||
"rows": 1,
|
||||
"cost": 2,
|
||||
"cost": 1.1251,
|
||||
"chosen": true
|
||||
},
|
||||
{
|
||||
@ -211,13 +211,13 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
|
||||
"chosen_access_method": {
|
||||
"type": "ref",
|
||||
"records": 1,
|
||||
"cost": 2,
|
||||
"cost": 1.1251,
|
||||
"uses_join_buffering": false,
|
||||
"filter_used": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 1,
|
||||
"cost_for_plan": 2.2,
|
||||
"cost_for_plan": 1.3251,
|
||||
"estimated_join_cardinality": 1
|
||||
}
|
||||
]
|
||||
|
@ -38,7 +38,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
|
||||
"using_mrr": false,
|
||||
"index_only": false,
|
||||
"rows": 2,
|
||||
"cost": 3.7609,
|
||||
"cost": 2.5477,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
|
@ -568,18 +568,18 @@ explain extended select * from t1
|
||||
where (a,b) not in ((1,2),(8,9), (5,1));
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY <derived3> index_subquery key0 key0 8 func,func 2 100.00 Using where; Full scan on NULL key
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`_col_1`,`tvc_0`.`_col_2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`_col_1` and `test`.`t1`.`b` = `<subquery2>`.`_col_2`))))
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),<exists>(<index_lookup>(<cache>(`test`.`t1`.`a`) in (temporary) on key0 where trigcond(<cache>(`test`.`t1`.`a`) = `tvc_0`.`_col_1`) and trigcond(<cache>(`test`.`t1`.`b`) = `tvc_0`.`_col_2`)))))
|
||||
explain extended select * from t1
|
||||
where (a,b) not in (select * from (values (1,2),(8,9), (5,1)) as tvc_0);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY <derived3> index_subquery key0 key0 8 func,func 2 100.00 Using where; Full scan on NULL key
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`1`,`tvc_0`.`2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`1` and `test`.`t1`.`b` = `<subquery2>`.`2`))))
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),<exists>(<index_lookup>(<cache>(`test`.`t1`.`a`) in (temporary) on key0 where trigcond(<cache>(`test`.`t1`.`a`) = `tvc_0`.`1`) and trigcond(<cache>(`test`.`t1`.`b`) = `tvc_0`.`2`)))))
|
||||
select * from t1
|
||||
where b < 7 and (a,b) not in ((1,2),(8,9), (5,1));
|
||||
a b
|
||||
@ -590,10 +590,10 @@ explain extended select * from t1
|
||||
where b < 7 and (a,b) not in ((1,2),(8,9), (5,1));
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY <derived3> index_subquery key0 key0 8 func,func 2 100.00 Using where; Full scan on NULL key
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`b` < 7 and !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`_col_1`,`tvc_0`.`_col_2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`_col_1` and `test`.`t1`.`b` = `<subquery2>`.`_col_2`))))
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`b` < 7 and !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),<exists>(<index_lookup>(<cache>(`test`.`t1`.`a`) in (temporary) on key0 where trigcond(<cache>(`test`.`t1`.`a`) = `tvc_0`.`_col_1`) and trigcond(<cache>(`test`.`t1`.`b`) = `tvc_0`.`_col_2`)))))
|
||||
select * from t2
|
||||
where (a,c) not in ((1,2),(8,9), (5,1));
|
||||
a b c
|
||||
@ -606,10 +606,10 @@ explain extended select * from t2
|
||||
where (a,c) not in ((1,2),(8,9), (5,1));
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 6 100.00 Using where
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY <derived3> index_subquery key0 key0 8 func,func 2 100.00 Using where; Full scan on NULL key
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where !<expr_cache><`test`.`t2`.`a`,`test`.`t2`.`c`>(<in_optimizer>((`test`.`t2`.`a`,`test`.`t2`.`c`),(`test`.`t2`.`a`,`test`.`t2`.`c`) in ( <materialize> (/* select#2 */ select `tvc_0`.`_col_1`,`tvc_0`.`_col_2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t2`.`a` in <temporary table> on distinct_key where `test`.`t2`.`a` = `<subquery2>`.`_col_1` and `test`.`t2`.`c` = `<subquery2>`.`_col_2`))))
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where !<expr_cache><`test`.`t2`.`a`,`test`.`t2`.`c`>(<in_optimizer>((`test`.`t2`.`a`,`test`.`t2`.`c`),<exists>(<index_lookup>(<cache>(`test`.`t2`.`a`) in (temporary) on key0 where trigcond(<cache>(`test`.`t2`.`a`) = `tvc_0`.`_col_1`) and trigcond(<cache>(`test`.`t2`.`c`) = `tvc_0`.`_col_2`)))))
|
||||
drop table t1, t2, t3;
|
||||
set @@in_predicate_conversion_threshold= default;
|
||||
#
|
||||
|
@ -1191,7 +1191,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index k2 k3 5 NULL 111 Using where
|
||||
EXPLAIN SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 4000;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref k2 k2 5 const 7341 Using where; Using filesort
|
||||
1 SIMPLE t2 index k2 k3 5 NULL 22318 Using where
|
||||
EXPLAIN SELECT id,c3 FROM t2 WHERE c2 BETWEEN 10 AND 12 ORDER BY c3 LIMIT 20;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index k2 k3 5 NULL 73 Using where
|
||||
@ -3118,7 +3118,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
# See above query
|
||||
EXPLAIN SELECT id1 FROM t2 WHERE id2=1 AND id3=1 ORDER BY date DESC LIMIT 0,4;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref id_23_date,id_234_date id_23_date 2 const,const 8 Using where
|
||||
1 SIMPLE t2 range id_23_date,id_234_date id_23_date 2 NULL 8 Using where
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-8989: ORDER BY optimizer ignores equality propagation
|
||||
|
@ -551,7 +551,7 @@ INSERT INTO `t1` VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),
|
||||
INSERT INTO `t2` VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17),(18),(19),(20);
|
||||
EXPLAIN PARTITIONS SELECT c1 FROM t1 WHERE (c1 > 10 AND c1 < 13) OR (c1 > 17 AND c1 < 20);
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 NULL index c1 c1 5 NULL 20 Using where; Using index
|
||||
1 SIMPLE t1 NULL range c1 c1 5 NULL 4 Using where; Using index
|
||||
FLUSH STATUS;
|
||||
SELECT c1 FROM t1 WHERE (c1 > 10 AND c1 < 13) OR (c1 > 17 AND c1 < 20);
|
||||
c1
|
||||
@ -561,10 +561,10 @@ c1
|
||||
19
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
Variable_name Value
|
||||
Handler_read_first 1
|
||||
Handler_read_key 0
|
||||
Handler_read_first 0
|
||||
Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 20
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
@ -572,7 +572,7 @@ Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
EXPLAIN PARTITIONS SELECT c1 FROM t2 WHERE (c1 > 10 AND c1 < 13) OR (c1 > 17 AND c1 < 20);
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 a index c1 c1 5 NULL 20 Using where; Using index
|
||||
1 SIMPLE t2 a range c1 c1 5 NULL 4 Using where; Using index
|
||||
FLUSH STATUS;
|
||||
SELECT c1 FROM t2 WHERE (c1 > 10 AND c1 < 13) OR (c1 > 17 AND c1 < 20);
|
||||
c1
|
||||
@ -582,10 +582,10 @@ c1
|
||||
19
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
Variable_name Value
|
||||
Handler_read_first 1
|
||||
Handler_read_key 0
|
||||
Handler_read_first 0
|
||||
Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 20
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
@ -2362,6 +2362,10 @@ EXPLAIN
|
||||
SELECT b, c FROM t1 WHERE b = 1 GROUP BY b, c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range bc bc 10 NULL 8 Using where; Using index for group-by
|
||||
EXPLAIN
|
||||
SELECT b, c FROM t1 WHERE b = 1 or b=2 GROUP BY b, c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range bc bc 10 NULL 8 Using where; Using index for group-by
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #45807: crash accessing partitioned table and sql_mode
|
||||
|
@ -2293,6 +2293,9 @@ SELECT b, c FROM t1 WHERE b = 1 GROUP BY b, c;
|
||||
EXPLAIN
|
||||
SELECT b, c FROM t1 WHERE b = 1 GROUP BY b, c;
|
||||
|
||||
EXPLAIN
|
||||
SELECT b, c FROM t1 WHERE b = 1 or b=2 GROUP BY b, c;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
|
@ -699,7 +699,7 @@ EXPLAIN SELECT * FROM t1 WHERE col1 = 1 AND col2 = 2
|
||||
AND col3 BETWEEN '2013-03-08 00:00:00' AND '2013-03-12 12:00:00'
|
||||
GROUP BY 1, 2, 3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref PRIMARY,col1,col2 col1 8 const # Using where; Using filesort
|
||||
1 SIMPLE t1 range PRIMARY,col1,col2 PRIMARY 5 NULL # Using where; Using filesort
|
||||
SELECT * FROM t1 USE INDEX () WHERE col1 = 1 AND col2 = 2
|
||||
AND col3 BETWEEN '2013-03-08 00:00:00' AND '2013-03-12 12:00:00'
|
||||
GROUP BY 1, 2, 3;
|
||||
|
@ -129,7 +129,7 @@ set join_cache_level=6;
|
||||
set optimizer_switch='mrr=on';
|
||||
explain extended select * from t0,t2 where t2.a in (3,4) and t0.a=t2.a and (t0.b / 10) = t2.a-1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 100.00 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t0`.`tp` AS `tp`,`test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t0`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t0` join `test`.`t2` where `test`.`t0`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t0`.`b` / 10 = `test`.`t2`.`a` - 1
|
||||
@ -146,7 +146,7 @@ tp a b c a
|
||||
3 4 30 zzzyy 4
|
||||
explain extended select * from t1,t2 where t2.a in (3,4) and t1.a=t2.a and (t1.b / 10) = t2.a-1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 100.00 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`tp` AS `tp`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t1`.`b` / 10 = `test`.`t2`.`a` - 1
|
||||
@ -163,7 +163,7 @@ tp a b c a
|
||||
3 4 30 zzzyy 4
|
||||
explain extended select * from t0,t2 where t2.a in (3,4) and t0.a=t2.a and (t0.b / 10) = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 100.00 Using index condition; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t0`.`tp` AS `tp`,`test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t0`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t0` join `test`.`t2` where `test`.`t0`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t0`.`b` / 10 = 4
|
||||
@ -189,7 +189,7 @@ tp a b c a
|
||||
2 4 40 xxzy 4
|
||||
explain extended select * from t1,t2 where t2.a in (3,4) and t1.a=t2.a and (t1.b / 10) = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 100.00 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`tp` AS `tp`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t1`.`b` / 10 = 4
|
||||
@ -221,7 +221,7 @@ test.t2 analyze status Engine-independent statistics collected
|
||||
test.t2 analyze status OK
|
||||
explain extended select * from t2 left join t0 on t2.a=t0.a where t2.a in (3,4) and t0.b is null;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 23 17.39 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 4 100.00 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 100.00 Using where; Not exists; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t0`.`tp` AS `tp`,`test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t0`.`c` AS `c` from `test`.`t2` left join `test`.`t0` on(`test`.`t0`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` is not null) where `test`.`t2`.`a` in (3,4) and `test`.`t0`.`b` is null
|
||||
@ -229,7 +229,7 @@ select * from t2 left join t0 on t2.a=t0.a where t2.a in (3,4) and t0.b is null;
|
||||
a tp a b c
|
||||
explain extended select * from t2 left join t1 on t2.a=t1.a where t2.a in (3,4) and t1.b is null;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 23 17.39 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 4 100.00 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 100.00 Using where; Not exists; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t1`.`tp` AS `tp`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t2` left join `test`.`t1` on(`test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` is not null) where `test`.`t2`.`a` in (3,4) and `test`.`t1`.`b` is null
|
||||
|
@ -129,7 +129,7 @@ set join_cache_level=6;
|
||||
set optimizer_switch='mrr=on';
|
||||
explain extended select * from t0,t2 where t2.a in (3,4) and t0.a=t2.a and (t0.b / 10) = t2.a-1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 100.00 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t0`.`tp` AS `tp`,`test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t0`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t0` join `test`.`t2` where `test`.`t0`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t0`.`b` / 10 = `test`.`t2`.`a` - 1
|
||||
@ -146,7 +146,7 @@ tp a b c a
|
||||
3 4 30 zzzyy 4
|
||||
explain extended select * from t1,t2 where t2.a in (3,4) and t1.a=t2.a and (t1.b / 10) = t2.a-1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 100.00 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`tp` AS `tp`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t1`.`b` / 10 = `test`.`t2`.`a` - 1
|
||||
@ -163,7 +163,7 @@ tp a b c a
|
||||
3 4 30 zzzyy 4
|
||||
explain extended select * from t0,t2 where t2.a in (3,4) and t0.a=t2.a and (t0.b / 10) = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 100.00 Using index condition; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t0`.`tp` AS `tp`,`test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t0`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t0` join `test`.`t2` where `test`.`t0`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t0`.`b` / 10 = 4
|
||||
@ -189,7 +189,7 @@ tp a b c a
|
||||
2 4 40 xxzy 4
|
||||
explain extended select * from t1,t2 where t2.a in (3,4) and t1.a=t2.a and (t1.b / 10) = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 100.00 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`tp` AS `tp`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t1`.`b` / 10 = 4
|
||||
@ -221,7 +221,7 @@ test.t2 analyze status Engine-independent statistics collected
|
||||
test.t2 analyze status OK
|
||||
explain extended select * from t2 left join t0 on t2.a=t0.a where t2.a in (3,4) and t0.b is null;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 23 17.39 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 4 100.00 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 100.00 Using where; Not exists; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t0`.`tp` AS `tp`,`test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t0`.`c` AS `c` from `test`.`t2` left join `test`.`t0` on(`test`.`t0`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` is not null) where `test`.`t2`.`a` in (3,4) and `test`.`t0`.`b` is null
|
||||
@ -229,7 +229,7 @@ select * from t2 left join t0 on t2.a=t0.a where t2.a in (3,4) and t0.b is null;
|
||||
a tp a b c
|
||||
explain extended select * from t2 left join t1 on t2.a=t1.a where t2.a in (3,4) and t1.b is null;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 23 17.39 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 4 100.00 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 100.00 Using where; Not exists; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t1`.`tp` AS `tp`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t2` left join `test`.`t1` on(`test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` is not null) where `test`.`t2`.`a` in (3,4) and `test`.`t1`.`b` is null
|
||||
|
@ -129,7 +129,7 @@ set join_cache_level=6;
|
||||
set optimizer_switch='mrr=on';
|
||||
explain extended select * from t0,t2 where t2.a in (3,4) and t0.a=t2.a and (t0.b / 10) = t2.a-1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 100.00 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t0`.`tp` AS `tp`,`test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t0`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t0` join `test`.`t2` where `test`.`t0`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t0`.`b` / 10 = `test`.`t2`.`a` - 1
|
||||
@ -146,7 +146,7 @@ tp a b c a
|
||||
3 4 30 zzzyy 4
|
||||
explain extended select * from t1,t2 where t2.a in (3,4) and t1.a=t2.a and (t1.b / 10) = t2.a-1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 100.00 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`tp` AS `tp`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t1`.`b` / 10 = `test`.`t2`.`a` - 1
|
||||
@ -163,7 +163,7 @@ tp a b c a
|
||||
3 4 30 zzzyy 4
|
||||
explain extended select * from t0,t2 where t2.a in (3,4) and t0.a=t2.a and (t0.b / 10) = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 100.00 Using index condition; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t0`.`tp` AS `tp`,`test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t0`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t0` join `test`.`t2` where `test`.`t0`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t0`.`b` / 10 = 4
|
||||
@ -189,7 +189,7 @@ tp a b c a
|
||||
2 4 40 xxzy 4
|
||||
explain extended select * from t1,t2 where t2.a in (3,4) and t1.a=t2.a and (t1.b / 10) = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 10.00 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 100.00 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`tp` AS `tp`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,`test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` in (3,4) and `test`.`t1`.`b` / 10 = 4
|
||||
@ -221,7 +221,7 @@ test.t2 analyze status Engine-independent statistics collected
|
||||
test.t2 analyze status OK
|
||||
explain extended select * from t2 left join t0 on t2.a=t0.a where t2.a in (3,4) and t0.b is null;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 23 17.39 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 4 100.00 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 100.00 Using where; Not exists; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t0`.`tp` AS `tp`,`test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t0`.`c` AS `c` from `test`.`t2` left join `test`.`t0` on(`test`.`t0`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` is not null) where `test`.`t2`.`a` in (3,4) and `test`.`t0`.`b` is null
|
||||
@ -229,7 +229,7 @@ select * from t2 left join t0 on t2.a=t0.a where t2.a in (3,4) and t0.b is null;
|
||||
a tp a b c
|
||||
explain extended select * from t2 left join t1 on t2.a=t1.a where t2.a in (3,4) and t1.b is null;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 23 17.39 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 4 100.00 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 100.00 Using where; Not exists; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t1`.`tp` AS `tp`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t2` left join `test`.`t1` on(`test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t2`.`a` is not null) where `test`.`t2`.`a` in (3,4) and `test`.`t1`.`b` is null
|
||||
@ -287,13 +287,13 @@ set join_cache_level=6, optimizer_switch='mrr=on';
|
||||
explain
|
||||
select * from t0,t2 where t2.a in (3,4) and t0.a=t2.a and (t0.b / 10) = 4;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 Using where; Using index
|
||||
1 SIMPLE t0 ref idx idx 5 test.t2.a 12 Using index condition; Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
# This will use "Using index condition(BKA)"
|
||||
explain
|
||||
select * from t1,t2 where t2.a in (3,4) and t1.a=t2.a and (t1.b / 10) = 4;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index idx idx 5 NULL 20 Using where; Using index
|
||||
1 SIMPLE t2 range idx idx 5 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.a 12 Using index condition(BKA); Using join buffer (flat, BKA join); Rowid-ordered scan
|
||||
set join_cache_level=@tmp1, optimizer_switch=@tmp2;
|
||||
drop table t0,t1,t2;
|
||||
|
@ -18,7 +18,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
# # # # # # # # # 3 #
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 7;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
# # # # # # # # # 10 #
|
||||
# # # # # # # # # 8 #
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
# # # # # # # # # 3 #
|
||||
@ -42,7 +42,7 @@ a
|
||||
0
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 p0 range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 2;
|
||||
a
|
||||
-1
|
||||
@ -50,7 +50,7 @@ a
|
||||
1
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 2;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1 index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 3;
|
||||
a
|
||||
-1
|
||||
@ -59,7 +59,7 @@ a
|
||||
2
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 3;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2 index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2 range PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 4;
|
||||
a
|
||||
-1
|
||||
@ -69,7 +69,7 @@ a
|
||||
3
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 4;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3 index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3 range PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 5;
|
||||
a
|
||||
-1
|
||||
@ -80,7 +80,7 @@ a
|
||||
4
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 5;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4 index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4 range PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 6;
|
||||
a
|
||||
-1
|
||||
@ -92,7 +92,7 @@ a
|
||||
5
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 6;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5 index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5 range PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 7;
|
||||
a
|
||||
-1
|
||||
@ -105,7 +105,7 @@ a
|
||||
6
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 7;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 10 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 1;
|
||||
a
|
||||
-1
|
||||
@ -113,7 +113,7 @@ a
|
||||
1
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1 index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 2;
|
||||
a
|
||||
-1
|
||||
@ -122,7 +122,7 @@ a
|
||||
2
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 2;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2 index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2 range PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 3;
|
||||
a
|
||||
-1
|
||||
@ -132,7 +132,7 @@ a
|
||||
3
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 3;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3 index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3 range PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 4;
|
||||
a
|
||||
-1
|
||||
@ -143,7 +143,7 @@ a
|
||||
4
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 4;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4 index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4 range PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 5;
|
||||
a
|
||||
-1
|
||||
@ -155,7 +155,7 @@ a
|
||||
5
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 5;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5 index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5 range PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 6;
|
||||
a
|
||||
-1
|
||||
@ -168,7 +168,7 @@ a
|
||||
6
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 6;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 10 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 7;
|
||||
a
|
||||
-1
|
||||
@ -182,7 +182,7 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 7;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 10 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 9 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a = 1;
|
||||
a
|
||||
1
|
||||
@ -237,7 +237,7 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1,p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 8 Using where; Using index
|
||||
1 SIMPLE t1 p1,p2,p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 2;
|
||||
a
|
||||
2
|
||||
@ -249,7 +249,7 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 2;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 p2,p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 3;
|
||||
a
|
||||
3
|
||||
@ -260,7 +260,7 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 3;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 4;
|
||||
a
|
||||
4
|
||||
@ -270,7 +270,7 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 4;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p4,p5,max index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p4,p5,max range PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 5;
|
||||
a
|
||||
5
|
||||
@ -279,7 +279,7 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 5;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p5,max index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p5,max range PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 6;
|
||||
a
|
||||
6
|
||||
@ -287,14 +287,14 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 6;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 7;
|
||||
a
|
||||
7
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 7;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 1;
|
||||
a
|
||||
2
|
||||
@ -306,7 +306,7 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 p2,p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 2;
|
||||
a
|
||||
3
|
||||
@ -317,7 +317,7 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 2;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 3;
|
||||
a
|
||||
4
|
||||
@ -327,7 +327,7 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 3;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p4,p5,max index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p4,p5,max range PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 4;
|
||||
a
|
||||
5
|
||||
@ -336,7 +336,7 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 4;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p5,max index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p5,max range PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 5;
|
||||
a
|
||||
6
|
||||
@ -344,20 +344,20 @@ a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 5;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 6;
|
||||
a
|
||||
7
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 6;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 7;
|
||||
a
|
||||
8
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 7;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 1 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY)
|
||||
PARTITION BY RANGE (a) (
|
||||
@ -374,7 +374,7 @@ a
|
||||
0
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 p0 range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 2;
|
||||
a
|
||||
-1
|
||||
@ -382,7 +382,7 @@ a
|
||||
1
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 2;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1 index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 3;
|
||||
a
|
||||
-1
|
||||
@ -391,7 +391,7 @@ a
|
||||
2
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 3;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2 index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2 range PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 4;
|
||||
a
|
||||
-1
|
||||
@ -401,7 +401,7 @@ a
|
||||
3
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 4;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3 index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3 range PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 5;
|
||||
a
|
||||
-1
|
||||
@ -412,7 +412,7 @@ a
|
||||
4
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 5;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4 index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4 range PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a < 6;
|
||||
a
|
||||
-1
|
||||
@ -424,7 +424,7 @@ a
|
||||
5
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 6;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 9 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,max range PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 1;
|
||||
a
|
||||
-1
|
||||
@ -432,7 +432,7 @@ a
|
||||
1
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1 index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 2;
|
||||
a
|
||||
-1
|
||||
@ -441,7 +441,7 @@ a
|
||||
2
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 2;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2 index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2 range PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 3;
|
||||
a
|
||||
-1
|
||||
@ -451,7 +451,7 @@ a
|
||||
3
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 3;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3 index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3 range PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 4;
|
||||
a
|
||||
-1
|
||||
@ -462,7 +462,7 @@ a
|
||||
4
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 4;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4 index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4 range PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 5;
|
||||
a
|
||||
-1
|
||||
@ -474,7 +474,7 @@ a
|
||||
5
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 5;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 9 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,max range PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a <= 6;
|
||||
a
|
||||
-1
|
||||
@ -487,7 +487,7 @@ a
|
||||
6
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 6;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 9 Using where; Using index
|
||||
1 SIMPLE t1 p0,p1,p2,p3,p4,max range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a = 1;
|
||||
a
|
||||
1
|
||||
@ -535,7 +535,7 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1,p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 p1,p2,p3,p4,max range PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 2;
|
||||
a
|
||||
2
|
||||
@ -546,7 +546,7 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 2;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p2,p3,p4,max range PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 3;
|
||||
a
|
||||
3
|
||||
@ -556,7 +556,7 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 3;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p3,p4,max index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p3,p4,max range PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 4;
|
||||
a
|
||||
4
|
||||
@ -565,7 +565,7 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 4;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p4,max index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p4,max range PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 5;
|
||||
a
|
||||
5
|
||||
@ -573,14 +573,14 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 5;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a >= 6;
|
||||
a
|
||||
6
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 6;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 1;
|
||||
a
|
||||
2
|
||||
@ -591,7 +591,7 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p2,p3,p4,max range PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 2;
|
||||
a
|
||||
3
|
||||
@ -601,7 +601,7 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 2;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p3,p4,max index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p3,p4,max range PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 3;
|
||||
a
|
||||
4
|
||||
@ -610,7 +610,7 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 3;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p4,max index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p4,max range PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 4;
|
||||
a
|
||||
5
|
||||
@ -618,20 +618,20 @@ a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 4;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 5;
|
||||
a
|
||||
6
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 5;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
SELECT * FROM t1 WHERE a > 6;
|
||||
a
|
||||
7
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 6;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 max range PRIMARY PRIMARY 4 NULL 1 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
# test of RANGE and index
|
||||
CREATE TABLE t1 (a DATE, KEY(a))
|
||||
@ -744,62 +744,62 @@ a
|
||||
1001-01-01
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 5 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 5 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p2001-01-01 index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p2001-01-01 range a a 4 NULL 2 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1001-01-01 system a NULL NULL NULL 1
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 4 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 5 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 4 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
|
||||
# Disabling warnings for the invalid date
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 index a a 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 range a a 4 NULL 7 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 index a a 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 range a a 4 NULL 7 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p2001-01-01 index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p2001-01-01 range a a 4 NULL 2 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p2001-01-01 index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p2001-01-01 range a a 4 NULL 2 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 index a a 4 NULL 7 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 range a a 4 NULL 7 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 5 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 4 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
# test without index
|
||||
ALTER TABLE t1 DROP KEY a;
|
||||
SELECT * FROM t1 WHERE a < '1001-01-01';
|
||||
@ -1073,62 +1073,62 @@ a
|
||||
1001-01-01
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 4 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL range a a 4 NULL 2 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1001-01-01 system a NULL NULL NULL 1
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 4 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 4 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
|
||||
# Disabling warnings for the invalid date
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 6 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 6 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL range a a 4 NULL 2 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL range a a 4 NULL 2 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 6 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p1001-01-01 index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p1001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
# test without index
|
||||
ALTER TABLE t1 DROP KEY a;
|
||||
SELECT * FROM t1 WHERE a < '1001-01-01';
|
||||
@ -1402,62 +1402,62 @@ a
|
||||
1001-01-01
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 4 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL range a a 4 NULL 2 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1001-01-01 system a NULL NULL NULL 1
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 4 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 4 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
|
||||
# Disabling warnings for the invalid date
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 6 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 6 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL range a a 4 NULL 2 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 p2001-01-01,pNULL range a a 4 NULL 2 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 6 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 index a a 4 NULL 6 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pNULL,p1001-01-01 index a a 4 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 pNULL,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p1001-01-01 index a a 4 NULL 5 Using where; Using index
|
||||
1 SIMPLE t1 p0001-01-01,pNULL,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
||||
# test without index
|
||||
ALTER TABLE t1 DROP KEY a;
|
||||
SELECT * FROM t1 WHERE a < '1001-01-01';
|
||||
@ -2676,13 +2676,13 @@ explain partitions
|
||||
select * from t1 X, t1 Y
|
||||
where X.b = Y.b and (X.a=1 or X.a=2) and (Y.a=2 or Y.a=3);
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE X p1,p2 ALL a,b NULL NULL NULL 8 Using where
|
||||
1 SIMPLE Y p2,p3 ALL a,b NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE X p1,p2 range a,b a 4 NULL 4 Using where
|
||||
1 SIMPLE Y p2,p3 ref|filter a,b b|a 4|4 test.X.b 2 (50%) Using where; Using rowid filter
|
||||
explain partitions
|
||||
select * from t1 X, t1 Y where X.a = Y.a and (X.a=1 or X.a=2);
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE X p1,p2 ALL a NULL NULL NULL 8 Using where
|
||||
1 SIMPLE Y p1,p2 ALL a NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE X p1,p2 range a a 4 NULL 4 Using where
|
||||
1 SIMPLE Y p1,p2 ref a a 4 test.X.a 2
|
||||
drop table t1;
|
||||
create table t1 (a int) partition by hash(a) partitions 20;
|
||||
insert into t1 values (1),(2),(3);
|
||||
|
@ -2,16 +2,25 @@ drop table if exists t1, t2;
|
||||
#
|
||||
# Bug#48229: group by performance issue of partitioned table
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a INT,
|
||||
b INT,
|
||||
KEY a (a,b)
|
||||
)
|
||||
PARTITION BY HASH (a) PARTITIONS 1;
|
||||
INSERT INTO t1 VALUES (0, 580092), (3, 894076), (4, 805483), (4, 913540), (6, 611137), (8, 171602), (9, 599495), (9, 746305), (10, 272829), (10, 847519), (12, 258869), (12, 929028), (13, 288970), (15, 20971), (15, 105839), (16, 788272), (17, 76914), (18, 827274), (19, 802258), (20, 123677), (20, 587729), (22, 701449), (25, 31565), (25, 230782), (25, 442887), (25, 733139), (25, 851020);
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100, 3) GROUP BY a;
|
||||
CREATE TABLE t1 (a INT,b INT,KEY a (a,b));
|
||||
INSERT INTO `t1` VALUES (0,580092),(3000,894076),(4000,805483),(4000,913540),(6000,611137),(8000,171602),(9000,599495),(9000,746305),(10000,272829),(10000,847519),(12000,258869),(12000,929028),(13000,288970),(15000,20971),(15000,105839),(16000,788272),(17000,76914),(18000,827274),(19000,802258),(20000,123677),(20000,587729),(22000,701449),(25000,31565),(25000,230782),(25000,442887),(25000,733139),(25000,851020);
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10000, 1000000, 3000) GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by
|
||||
alter table t1 partition by hash(a) partitions 1;
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10000, 1000000, 3000) GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by
|
||||
alter table t1 remove partitioning;
|
||||
insert into t1 (a,b) select seq,seq from seq_4001_to_4100;
|
||||
insert into t1 (a,b) select seq,seq from seq_10001_to_10100;
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10000, 1000000, 3000) GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 5 NULL 4 Using where; Using index
|
||||
alter table t1 partition by hash(a) partitions 1;
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10000, 1000000, 3000) GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 5 NULL 4 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
create table t1 (a DATETIME)
|
||||
partition by range (TO_DAYS(a))
|
||||
|
@ -3,7 +3,8 @@
|
||||
# Simple test for the partition storage engine
|
||||
# Focuses on range partitioning tests
|
||||
#
|
||||
-- source include/have_partition.inc
|
||||
--source include/have_partition.inc
|
||||
--source include/have_sequence.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2;
|
||||
@ -12,19 +13,23 @@ drop table if exists t1, t2;
|
||||
--echo #
|
||||
--echo # Bug#48229: group by performance issue of partitioned table
|
||||
--echo #
|
||||
CREATE TABLE t1 (
|
||||
a INT,
|
||||
b INT,
|
||||
KEY a (a,b)
|
||||
)
|
||||
PARTITION BY HASH (a) PARTITIONS 1;
|
||||
|
||||
# insert some rows (i.e. so that rows/blocks > 1)
|
||||
INSERT INTO t1 VALUES (0, 580092), (3, 894076), (4, 805483), (4, 913540), (6, 611137), (8, 171602), (9, 599495), (9, 746305), (10, 272829), (10, 847519), (12, 258869), (12, 929028), (13, 288970), (15, 20971), (15, 105839), (16, 788272), (17, 76914), (18, 827274), (19, 802258), (20, 123677), (20, 587729), (22, 701449), (25, 31565), (25, 230782), (25, 442887), (25, 733139), (25, 851020);
|
||||
CREATE TABLE t1 (a INT,b INT,KEY a (a,b));
|
||||
INSERT INTO `t1` VALUES (0,580092),(3000,894076),(4000,805483),(4000,913540),(6000,611137),(8000,171602),(9000,599495),(9000,746305),(10000,272829),(10000,847519),(12000,258869),(12000,929028),(13000,288970),(15000,20971),(15000,105839),(16000,788272),(17000,76914),(18000,827274),(19000,802258),(20000,123677),(20000,587729),(22000,701449),(25000,31565),(25000,230782),(25000,442887),(25000,733139),(25000,851020);
|
||||
|
||||
# Before the fix the 'Extra' column showed 'Using index for group-by'
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100, 3) GROUP BY a;
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10000, 1000000, 3000) GROUP BY a;
|
||||
|
||||
alter table t1 partition by hash(a) partitions 1;
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10000, 1000000, 3000) GROUP BY a;
|
||||
alter table t1 remove partitioning;
|
||||
|
||||
insert into t1 (a,b) select seq,seq from seq_4001_to_4100;
|
||||
insert into t1 (a,b) select seq,seq from seq_10001_to_10100;
|
||||
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10000, 1000000, 3000) GROUP BY a;
|
||||
|
||||
alter table t1 partition by hash(a) partitions 1;
|
||||
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10000, 1000000, 3000) GROUP BY a;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
|
@ -462,15 +462,15 @@ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is
|
||||
def id 8 3 1 Y 32928 0 63
|
||||
def select_type 253 19 6 N 1 39 8
|
||||
def table 253 64 2 Y 0 39 8
|
||||
def type 253 10 3 Y 0 39 8
|
||||
def type 253 10 5 Y 0 39 8
|
||||
def possible_keys 253 4_OR_8_K 7 Y 0 39 8
|
||||
def key 253 64 0 Y 0 39 8
|
||||
def key_len 253 4_OR_8_K 0 Y 0 39 8
|
||||
def key 253 64 7 Y 0 39 8
|
||||
def key_len 253 4_OR_8_K 1 Y 0 39 8
|
||||
def ref 253 2048 0 Y 0 39 8
|
||||
def rows 253 64 1 Y 0 39 8
|
||||
def Extra 253 255 27 N 1 39 8
|
||||
def Extra 253 255 37 N 1 39 8
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 4 Using where; Using filesort
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using index condition; Using filesort
|
||||
drop table if exists t2;
|
||||
create table t2 (id smallint, name varchar(20)) ;
|
||||
prepare stmt1 from ' insert into t2 values(?, ?) ' ;
|
||||
|
@ -252,7 +252,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref x x 5 const 1 Using index
|
||||
explain select count(*) from t1 where x in (1,2,3,4);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index x x 5 NULL 9 Using where; Using index
|
||||
1 SIMPLE t1 range x x 5 NULL 4 Using where; Using index
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (key1 int(11) NOT NULL default '0', KEY i1 (key1));
|
||||
INSERT INTO t1 VALUES (0),(0),(0),(0),(0),(1),(1);
|
||||
@ -261,12 +261,12 @@ INSERT INTO t2 VALUES (0),(0),(1),(1),(2),(2);
|
||||
explain select * from t1, t2 where (t1.key1 <t2.keya + 1) and t2.keya=3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref j1 j1 4 const 1 Using index
|
||||
1 SIMPLE t1 index i1 i1 4 NULL 7 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t1 range i1 i1 4 NULL 7 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
explain select * from t1 force index(i1), t2 force index(j1) where
|
||||
(t1.key1 <t2.keya + 1) and t2.keya=3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref j1 j1 4 const 1 Using index
|
||||
1 SIMPLE t1 index i1 i1 4 NULL 7 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t1 range i1 i1 4 NULL 7 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (
|
||||
a int(11) default NULL,
|
||||
@ -327,8 +327,8 @@ KEY recount( owner, line )
|
||||
INSERT into t1 (owner,id,columnid,line) values (11,15,15,1),(11,13,13,5);
|
||||
SELECT id, columnid, tableid, content, showid, line, ordinal FROM t1 WHERE owner=11 AND ((columnid IN ( 15, 13, 14 ) AND line IN ( 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 31 )) OR (columnid IN ( 13, 14 ) AND line IN ( 15 ))) LIMIT 0 , 30;
|
||||
id columnid tableid content showid line ordinal
|
||||
13 13 1 188 1 5 0
|
||||
15 15 1 188 1 1 0
|
||||
13 13 1 188 1 5 0
|
||||
drop table t1;
|
||||
create table t1 (id int(10) primary key);
|
||||
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
@ -723,7 +723,7 @@ WHERE
|
||||
v.oxrootid ='d8c4177d09f8b11f5.52725521' AND
|
||||
s.oxleft > v.oxleft AND s.oxleft < v.oxright;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE v ref OXLEFT,OXRIGHT,OXROOTID OXROOTID 34 const 6 Using index condition
|
||||
1 SIMPLE v ALL OXLEFT,OXRIGHT,OXROOTID NULL NULL NULL 12 Using where
|
||||
1 SIMPLE s ALL OXLEFT NULL NULL NULL 12 Range checked for each record (index map: 0x4)
|
||||
SELECT s.oxid FROM t1 v, t1 s
|
||||
WHERE
|
||||
@ -1047,10 +1047,10 @@ INSERT INTO `t1` VALUES
|
||||
,(13,2),(14,2),(15,3),(16,3),(17,3),(18,3),(19,3);
|
||||
explain select * from t1 where a in (3,4) and b in (1,2,3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
explain select * from v1 where a in (3,4) and b in (1,2,3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
explain select * from t1 where a between 3 and 4 and b between 1 and 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
@ -1427,7 +1427,7 @@ SELECT * FROM t3 WHERE
|
||||
a < 5 OR
|
||||
a < 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t3 index a a 10 NULL 23 Using where; Using index
|
||||
1 SIMPLE t3 range a a 5 NULL 9 Using where; Using index
|
||||
DROP TABLE t1, t2, t3;
|
||||
#
|
||||
# Bug #47123: Endless 100% CPU loop with STRAIGHT_JOIN
|
||||
@ -1981,7 +1981,7 @@ insert into t1 values (0,0,0), (2,2,0), (1,1,1), (2,2,1);
|
||||
explain
|
||||
select * from t1 force index (idx) where a >=1 and c <= 1 and a=b and b > 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index idx idx 15 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 range idx idx 5 NULL 2 Using where; Using index
|
||||
select * from t1 force index (idx) where a >=1 and c <= 1 and a=b and b > 1;
|
||||
a b c
|
||||
2 2 0
|
||||
@ -2510,7 +2510,7 @@ insert into t2 values
|
||||
explain select * from t1,t2
|
||||
where a = d and (a,e) in ((3,3),(7,7),(2,2));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range idx1,idx2 idx1 5 NULL 3 Using index condition; Using where
|
||||
1 SIMPLE t2 range|filter idx1,idx2 idx1|idx2 5|5 NULL 3 (60%) Using index condition; Using where; Using rowid filter
|
||||
1 SIMPLE t1 ref idx idx 5 test.t2.d 8
|
||||
explain format=json select * from t1,t2
|
||||
where a = d and (a,e) in ((3,3),(7,7),(2,2));
|
||||
@ -2525,6 +2525,14 @@ EXPLAIN
|
||||
"key": "idx1",
|
||||
"key_length": "5",
|
||||
"used_key_parts": ["d"],
|
||||
"rowid_filter": {
|
||||
"range": {
|
||||
"key": "idx2",
|
||||
"used_key_parts": ["e"]
|
||||
},
|
||||
"rows": 12,
|
||||
"selectivity_pct": 60
|
||||
},
|
||||
"rows": 3,
|
||||
"filtered": 60,
|
||||
"index_condition": "t2.d is not null",
|
||||
@ -3105,12 +3113,12 @@ insert into t2 select A.a + B.a*10 + C.a*100 from ten A, ten B,ten C where A.a +
|
||||
# expected type=range, rows=1487 , reason=using index dives
|
||||
analyze SELECT * FROM t1 where a in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198);
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 2000 2000.00 74.35 59.95 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 1487 1199.00 100.00 100.00 Using where; Using index
|
||||
insert into t2 values (200),(201);
|
||||
# expected type=range, rows=201 , reason=using index statistics
|
||||
analyze SELECT * FROM t1 where a in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,200,201);
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 2000 2000.00 10.05 60.05 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 201 1201.00 100.00 100.00 Using where; Using index
|
||||
drop table t1,ten,t2;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
|
@ -95,7 +95,7 @@ KEY (a,b)
|
||||
INSERT INTO t1 VALUES (1,'a',1),(2,'b',2);
|
||||
explain SELECT a FROM t1 WHERE pk < 0 AND a <= 'w' and b > 0;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY,a a 9 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY,a PRIMARY 4 NULL 1 Using where
|
||||
SELECT a FROM t1 WHERE pk < 0 AND a <= 'w' and b > 0;
|
||||
a
|
||||
drop table t1;
|
||||
|
@ -255,7 +255,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref x x 5 const 1 Using index
|
||||
explain select count(*) from t1 where x in (1,2,3,4);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index x x 5 NULL 9 Using where; Using index
|
||||
1 SIMPLE t1 range x x 5 NULL 4 Using where; Using index
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (key1 int(11) NOT NULL default '0', KEY i1 (key1));
|
||||
INSERT INTO t1 VALUES (0),(0),(0),(0),(0),(1),(1);
|
||||
@ -264,12 +264,12 @@ INSERT INTO t2 VALUES (0),(0),(1),(1),(2),(2);
|
||||
explain select * from t1, t2 where (t1.key1 <t2.keya + 1) and t2.keya=3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref j1 j1 4 const 1 Using index
|
||||
1 SIMPLE t1 index i1 i1 4 NULL 7 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t1 range i1 i1 4 NULL 7 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
explain select * from t1 force index(i1), t2 force index(j1) where
|
||||
(t1.key1 <t2.keya + 1) and t2.keya=3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref j1 j1 4 const 1 Using index
|
||||
1 SIMPLE t1 index i1 i1 4 NULL 7 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t1 range i1 i1 4 NULL 7 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (
|
||||
a int(11) default NULL,
|
||||
@ -330,8 +330,8 @@ KEY recount( owner, line )
|
||||
INSERT into t1 (owner,id,columnid,line) values (11,15,15,1),(11,13,13,5);
|
||||
SELECT id, columnid, tableid, content, showid, line, ordinal FROM t1 WHERE owner=11 AND ((columnid IN ( 15, 13, 14 ) AND line IN ( 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 31 )) OR (columnid IN ( 13, 14 ) AND line IN ( 15 ))) LIMIT 0 , 30;
|
||||
id columnid tableid content showid line ordinal
|
||||
13 13 1 188 1 5 0
|
||||
15 15 1 188 1 1 0
|
||||
13 13 1 188 1 5 0
|
||||
drop table t1;
|
||||
create table t1 (id int(10) primary key);
|
||||
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
@ -726,7 +726,7 @@ WHERE
|
||||
v.oxrootid ='d8c4177d09f8b11f5.52725521' AND
|
||||
s.oxleft > v.oxleft AND s.oxleft < v.oxright;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE v ref OXLEFT,OXRIGHT,OXROOTID OXROOTID 34 const 6 Using index condition
|
||||
1 SIMPLE v ALL OXLEFT,OXRIGHT,OXROOTID NULL NULL NULL 12 Using where
|
||||
1 SIMPLE s ALL OXLEFT NULL NULL NULL 12 Range checked for each record (index map: 0x4)
|
||||
SELECT s.oxid FROM t1 v, t1 s
|
||||
WHERE
|
||||
@ -1050,10 +1050,10 @@ INSERT INTO `t1` VALUES
|
||||
,(13,2),(14,2),(15,3),(16,3),(17,3),(18,3),(19,3);
|
||||
explain select * from t1 where a in (3,4) and b in (1,2,3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
explain select * from v1 where a in (3,4) and b in (1,2,3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
explain select * from t1 where a between 3 and 4 and b between 1 and 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 8 NULL # Using where; Using index
|
||||
@ -1430,7 +1430,7 @@ SELECT * FROM t3 WHERE
|
||||
a < 5 OR
|
||||
a < 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t3 index a a 10 NULL 23 Using where; Using index
|
||||
1 SIMPLE t3 range a a 5 NULL 9 Using where; Using index
|
||||
DROP TABLE t1, t2, t3;
|
||||
#
|
||||
# Bug #47123: Endless 100% CPU loop with STRAIGHT_JOIN
|
||||
@ -1984,7 +1984,7 @@ insert into t1 values (0,0,0), (2,2,0), (1,1,1), (2,2,1);
|
||||
explain
|
||||
select * from t1 force index (idx) where a >=1 and c <= 1 and a=b and b > 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index idx idx 15 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 range idx idx 5 NULL 2 Using where; Using index
|
||||
select * from t1 force index (idx) where a >=1 and c <= 1 and a=b and b > 1;
|
||||
a b c
|
||||
2 2 0
|
||||
@ -3102,12 +3102,12 @@ insert into t2 select A.a + B.a*10 + C.a*100 from ten A, ten B,ten C where A.a +
|
||||
# expected type=range, rows=1487 , reason=using index dives
|
||||
analyze SELECT * FROM t1 where a in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198);
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 2000 2000.00 74.35 59.95 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 1487 1199.00 100.00 100.00 Using where; Using index
|
||||
insert into t2 values (200),(201);
|
||||
# expected type=range, rows=201 , reason=using index statistics
|
||||
analyze SELECT * FROM t1 where a in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,200,201);
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 2000 2000.00 10.05 60.05 Using where; Using index
|
||||
1 SIMPLE t1 range a a 5 NULL 201 1201.00 100.00 100.00 Using where; Using index
|
||||
drop table t1,ten,t2;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
|
@ -951,7 +951,7 @@ WHERE ((Population > 101000 AND Population < 11000) OR
|
||||
ID BETWEEN 3500 AND 3800) AND Country='USA'
|
||||
AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryName 38 NULL 23 Using index condition; Using where
|
||||
1 SIMPLE City range|filter PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryName|PRIMARY 38|4 NULL 23 (7%) Using index condition; Using where; Using rowid filter
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Population > 101000 AND Population < 11000) OR
|
||||
|
@ -1085,7 +1085,7 @@ EXPLAIN SELECT Name, Country, Population FROM City WHERE
|
||||
(Name='Samara' AND Country='RUS') OR
|
||||
(Name='Seattle' AND Country='USA');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Country,CountryPopulation,CountryName,CityName CountryName,CityName 38,35 NULL 27 Using sort_union(CountryName,CityName); Using where
|
||||
1 SIMPLE City range Country,CountryPopulation,CountryName,CityName CountryName 38 NULL 27 Using index condition
|
||||
SELECT Name, Country, Population FROM City WHERE
|
||||
(Name='Manila' AND Country='PHL') OR
|
||||
(Name='Addis Abeba' AND Country='ETH') OR
|
||||
@ -1806,7 +1806,7 @@ SELECT * FROM t1
|
||||
WHERE t1.a>300 AND t1.c!=0 AND t1.b>=350 AND t1.b<=400 AND
|
||||
(t1.c=0 OR t1.a=500);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index PRIMARY,idx idx 10 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY,idx idx 5 NULL 2 Using where; Using index
|
||||
SELECT * FROM t1
|
||||
WHERE t1.a>300 AND t1.c!=0 AND t1.b>=350 AND t1.b<=400 AND
|
||||
(t1.c=0 OR t1.a=500);
|
||||
|
@ -886,7 +886,7 @@ WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
o_totalprice between 200000 and 230000;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 69 Using index condition
|
||||
1 SIMPLE lineitem ref|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY|i_l_shipdate 4|4 dbt3_s001.orders.o_orderkey 4 (8%) Using where; Using rowid filter
|
||||
1 SIMPLE lineitem ref|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey|i_l_shipdate 4|4 dbt3_s001.orders.o_orderkey 4 (8%) Using where; Using rowid filter
|
||||
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
|
||||
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
||||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
@ -915,7 +915,7 @@ EXPLAIN
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -939,7 +939,7 @@ WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
o_totalprice between 200000 and 230000;
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 69 71.00 100.00 100.00 Using index condition
|
||||
1 SIMPLE lineitem ref|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY|i_l_shipdate 4|4 dbt3_s001.orders.o_orderkey 4 (8%) 0.52 (7%) 8.48 100.00 Using where; Using rowid filter
|
||||
1 SIMPLE lineitem ref|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey|i_l_shipdate 4|4 dbt3_s001.orders.o_orderkey 4 (8%) 0.52 (7%) 8.48 100.00 Using where; Using rowid filter
|
||||
set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
|
||||
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
||||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
@ -975,7 +975,7 @@ ANALYZE
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1050,7 +1050,7 @@ WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
o_totalprice between 200000 and 230000;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 69 Using index condition
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
set statement optimizer_switch='rowid_filter=off' for EXPLAIN FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
|
||||
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
||||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
@ -1079,7 +1079,7 @@ EXPLAIN
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1095,7 +1095,7 @@ WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
o_totalprice between 200000 and 230000;
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 69 71.00 100.00 100.00 Using index condition
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.70 8.48 7.77 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 6.70 8.48 7.77 Using where
|
||||
set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
|
||||
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
||||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
@ -1131,7 +1131,7 @@ ANALYZE
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1454,7 +1454,7 @@ o_totalprice BETWEEN 200000 AND 220000 AND
|
||||
l_shipdate BETWEEN '1996-10-01' AND '1996-12-01';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice,i_o_totaldiscount i_o_totaldiscount 9 NULL 39 Using index condition; Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT o_totaldiscount, o_totalprice, l_shipdate
|
||||
FROM orders, lineitem
|
||||
WHERE o_orderkey=l_orderkey AND
|
||||
@ -1486,7 +1486,7 @@ EXPLAIN
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1504,7 +1504,7 @@ o_totalprice BETWEEN 200000 AND 220000 AND
|
||||
l_shipdate BETWEEN '1996-10-01' AND '1996-12-01';
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice,i_o_totaldiscount i_o_totaldiscount 9 NULL 39 41.00 3.20 2.44 Using index condition; Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.00 3.05 66.67 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 6.00 3.05 66.67 Using where
|
||||
set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_totaldiscount, o_totalprice, l_shipdate
|
||||
FROM orders, lineitem
|
||||
WHERE o_orderkey=l_orderkey AND
|
||||
@ -1543,7 +1543,7 @@ ANALYZE
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1577,7 +1577,7 @@ o_totalprice BETWEEN 200000 AND 220000 AND
|
||||
l_shipdate BETWEEN '1996-10-01' AND '1996-12-01';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice,i_o_totaldiscount i_o_totaldiscount 9 NULL 39 Using index condition; Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
set statement optimizer_switch='rowid_filter=off' for EXPLAIN FORMAT=JSON SELECT o_totaldiscount, o_totalprice, l_shipdate
|
||||
FROM orders, lineitem
|
||||
WHERE o_orderkey=l_orderkey AND
|
||||
@ -1609,7 +1609,7 @@ EXPLAIN
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1627,7 +1627,7 @@ o_totalprice BETWEEN 200000 AND 220000 AND
|
||||
l_shipdate BETWEEN '1996-10-01' AND '1996-12-01';
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice,i_o_totaldiscount i_o_totaldiscount 9 NULL 39 41.00 3.20 2.44 Using index condition; Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.00 3.05 66.67 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 6.00 3.05 66.67 Using where
|
||||
set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT o_totaldiscount, o_totalprice, l_shipdate
|
||||
FROM orders, lineitem
|
||||
WHERE o_orderkey=l_orderkey AND
|
||||
@ -1666,7 +1666,7 @@ ANALYZE
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1703,7 +1703,7 @@ o_totalprice BETWEEN 200000 AND 220000 AND
|
||||
l_shipdate BETWEEN '1996-10-01' AND '1996-12-01';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_orderdate,i_o_totalprice,i_o_totaldiscount i_o_totaldiscount 9 NULL 39 Using index condition; Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT o_totaldiscount, o_totalprice, l_shipdate
|
||||
FROM v1, lineitem
|
||||
WHERE o_orderkey=l_orderkey AND
|
||||
@ -1740,7 +1740,7 @@ EXPLAIN
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1758,7 +1758,7 @@ o_totalprice BETWEEN 200000 AND 220000 AND
|
||||
l_shipdate BETWEEN '1996-10-01' AND '1996-12-01';
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_orderdate,i_o_totalprice,i_o_totaldiscount i_o_totaldiscount 9 NULL 39 41.00 1.95 2.44 Using index condition; Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.00 3.05 66.67 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 6.00 3.05 66.67 Using where
|
||||
set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_totaldiscount, o_totalprice, l_shipdate
|
||||
FROM v1, lineitem
|
||||
WHERE o_orderkey=l_orderkey AND
|
||||
@ -1802,7 +1802,7 @@ ANALYZE
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1836,7 +1836,7 @@ o_totalprice BETWEEN 200000 AND 220000 AND
|
||||
l_shipdate BETWEEN '1996-10-01' AND '1996-12-01';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_orderdate,i_o_totalprice,i_o_totaldiscount i_o_totaldiscount 9 NULL 39 Using index condition; Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
set statement optimizer_switch='rowid_filter=off' for EXPLAIN FORMAT=JSON SELECT o_totaldiscount, o_totalprice, l_shipdate
|
||||
FROM v1, lineitem
|
||||
WHERE o_orderkey=l_orderkey AND
|
||||
@ -1873,7 +1873,7 @@ EXPLAIN
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
@ -1891,7 +1891,7 @@ o_totalprice BETWEEN 200000 AND 220000 AND
|
||||
l_shipdate BETWEEN '1996-10-01' AND '1996-12-01';
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_orderdate,i_o_totalprice,i_o_totaldiscount i_o_totaldiscount 9 NULL 39 41.00 1.95 2.44 Using index condition; Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.00 3.05 66.67 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 6.00 3.05 66.67 Using where
|
||||
set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT o_totaldiscount, o_totalprice, l_shipdate
|
||||
FROM v1, lineitem
|
||||
WHERE o_orderkey=l_orderkey AND
|
||||
@ -1935,7 +1935,7 @@ ANALYZE
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
|
@ -567,8 +567,8 @@ WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
l_quantity > 45 AND
|
||||
o_totalprice between 180000 and 230000;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 144 Using where; Using index
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
1 SIMPLE lineitem range|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 510 (10%) Using index condition; Using where; Using rowid filter
|
||||
1 SIMPLE orders eq_ref PRIMARY,i_o_totalprice PRIMARY 4 dbt3_s001.lineitem.l_orderkey 1 Using where
|
||||
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
|
||||
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
||||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
@ -578,21 +578,9 @@ EXPLAIN
|
||||
{
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "orders",
|
||||
"access_type": "range",
|
||||
"possible_keys": ["PRIMARY", "i_o_totalprice"],
|
||||
"key": "i_o_totalprice",
|
||||
"key_length": "9",
|
||||
"used_key_parts": ["o_totalprice"],
|
||||
"rows": 144,
|
||||
"filtered": 100,
|
||||
"attached_condition": "orders.o_totalprice between 180000 and 230000",
|
||||
"using_index": true
|
||||
},
|
||||
"table": {
|
||||
"table_name": "lineitem",
|
||||
"access_type": "ref",
|
||||
"access_type": "range",
|
||||
"possible_keys": [
|
||||
"PRIMARY",
|
||||
"i_l_shipdate",
|
||||
@ -600,13 +588,33 @@ EXPLAIN
|
||||
"i_l_orderkey_quantity",
|
||||
"i_l_quantity"
|
||||
],
|
||||
"key": "i_l_shipdate",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_shipDATE"],
|
||||
"rowid_filter": {
|
||||
"range": {
|
||||
"key": "i_l_quantity",
|
||||
"used_key_parts": ["l_quantity"]
|
||||
},
|
||||
"rows": 605,
|
||||
"selectivity_pct": 10.075
|
||||
},
|
||||
"rows": 510,
|
||||
"filtered": 10.075,
|
||||
"index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'",
|
||||
"attached_condition": "lineitem.l_quantity > 45"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "orders",
|
||||
"access_type": "eq_ref",
|
||||
"possible_keys": ["PRIMARY", "i_o_totalprice"],
|
||||
"key": "PRIMARY",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
"rows": 4,
|
||||
"filtered": 0.8557,
|
||||
"attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30' and lineitem.l_quantity > 45"
|
||||
"used_key_parts": ["o_orderkey"],
|
||||
"ref": ["dbt3_s001.lineitem.l_orderkey"],
|
||||
"rows": 1,
|
||||
"filtered": 9.6,
|
||||
"attached_condition": "orders.o_totalprice between 180000 and 230000"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -616,8 +624,8 @@ WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
l_quantity > 45 AND
|
||||
o_totalprice between 180000 and 230000;
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 144 144.00 100.00 100.00 Using where; Using index
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.62 0.86 1.68 Using where
|
||||
1 SIMPLE lineitem range|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 510 (10%) 60.00 (11%) 10.07 100.00 Using index condition; Using where; Using rowid filter
|
||||
1 SIMPLE orders eq_ref PRIMARY,i_o_totalprice PRIMARY 4 dbt3_s001.lineitem.l_orderkey 1 1.00 9.60 26.67 Using where
|
||||
set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
|
||||
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
||||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
|
||||
@ -629,26 +637,9 @@ ANALYZE
|
||||
"select_id": 1,
|
||||
"r_loops": 1,
|
||||
"r_total_time_ms": "REPLACED",
|
||||
"table": {
|
||||
"table_name": "orders",
|
||||
"access_type": "range",
|
||||
"possible_keys": ["PRIMARY", "i_o_totalprice"],
|
||||
"key": "i_o_totalprice",
|
||||
"key_length": "9",
|
||||
"used_key_parts": ["o_totalprice"],
|
||||
"r_loops": 1,
|
||||
"rows": 144,
|
||||
"r_rows": 144,
|
||||
"r_table_time_ms": "REPLACED",
|
||||
"r_other_time_ms": "REPLACED",
|
||||
"filtered": 100,
|
||||
"r_filtered": 100,
|
||||
"attached_condition": "orders.o_totalprice between 180000 and 230000",
|
||||
"using_index": true
|
||||
},
|
||||
"table": {
|
||||
"table_name": "lineitem",
|
||||
"access_type": "ref",
|
||||
"access_type": "range",
|
||||
"possible_keys": [
|
||||
"PRIMARY",
|
||||
"i_l_shipdate",
|
||||
@ -656,18 +647,47 @@ ANALYZE
|
||||
"i_l_orderkey_quantity",
|
||||
"i_l_quantity"
|
||||
],
|
||||
"key": "PRIMARY",
|
||||
"key": "i_l_shipdate",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
"r_loops": 144,
|
||||
"rows": 4,
|
||||
"r_rows": 6.625,
|
||||
"used_key_parts": ["l_shipDATE"],
|
||||
"rowid_filter": {
|
||||
"range": {
|
||||
"key": "i_l_quantity",
|
||||
"used_key_parts": ["l_quantity"]
|
||||
},
|
||||
"rows": 605,
|
||||
"selectivity_pct": 10.075,
|
||||
"r_rows": 605,
|
||||
"r_selectivity_pct": 11.765,
|
||||
"r_buffer_size": "REPLACED",
|
||||
"r_filling_time_ms": "REPLACED"
|
||||
},
|
||||
"r_loops": 1,
|
||||
"rows": 510,
|
||||
"r_rows": 60,
|
||||
"r_table_time_ms": "REPLACED",
|
||||
"r_other_time_ms": "REPLACED",
|
||||
"filtered": 0.8557,
|
||||
"r_filtered": 1.6771,
|
||||
"attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30' and lineitem.l_quantity > 45"
|
||||
"filtered": 10.075,
|
||||
"r_filtered": 100,
|
||||
"index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'",
|
||||
"attached_condition": "lineitem.l_quantity > 45"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "orders",
|
||||
"access_type": "eq_ref",
|
||||
"possible_keys": ["PRIMARY", "i_o_totalprice"],
|
||||
"key": "PRIMARY",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["o_orderkey"],
|
||||
"ref": ["dbt3_s001.lineitem.l_orderkey"],
|
||||
"r_loops": 60,
|
||||
"rows": 1,
|
||||
"r_rows": 1,
|
||||
"r_table_time_ms": "REPLACED",
|
||||
"r_other_time_ms": "REPLACED",
|
||||
"filtered": 9.6,
|
||||
"r_filtered": 26.667,
|
||||
"attached_condition": "orders.o_totalprice between 180000 and 230000"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2095,8 +2115,8 @@ union
|
||||
( select * from t1
|
||||
where (f1 is null and f2 is null) and (f2 between 'a' and 'z' or f1 in ('a')));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index_merge f1,f2 f1,f2 13,33 NULL 1 Using intersect(f1,f2); Using where
|
||||
2 UNION t1 index_merge f1,f2 f1,f2 13,33 NULL 1 Using intersect(f1,f2); Using where
|
||||
1 PRIMARY t1 ref|filter f1,f2 f1|f1 13|13 const 1 (2%) Using index condition; Using where; Using rowid filter
|
||||
2 UNION t1 ref|filter f1,f2 f1|f1 13|13 const 1 (2%) Using index condition; Using where; Using rowid filter
|
||||
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL
|
||||
explain format=json ( select * from t1
|
||||
where (f1 is null and f2 is null) and (f2 between 'a' and 'z' or f1 in ('a')))
|
||||
@ -2115,24 +2135,24 @@ EXPLAIN
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "index_merge",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["f1", "f2"],
|
||||
"key_length": "13,33",
|
||||
"index_merge": {
|
||||
"intersect": {
|
||||
"range": {
|
||||
"key": "f1",
|
||||
"used_key_parts": ["f1"]
|
||||
},
|
||||
"range": {
|
||||
"key": "f2",
|
||||
"used_key_parts": ["f2"]
|
||||
}
|
||||
}
|
||||
"key": "f1",
|
||||
"key_length": "13",
|
||||
"used_key_parts": ["f1"],
|
||||
"ref": ["const"],
|
||||
"rowid_filter": {
|
||||
"range": {
|
||||
"key": "f1",
|
||||
"used_key_parts": ["f1"]
|
||||
},
|
||||
"rows": 1,
|
||||
"selectivity_pct": 1.5873
|
||||
},
|
||||
"rows": 1,
|
||||
"filtered": 1.5873,
|
||||
"attached_condition": "t1.f1 is null and t1.f2 is null and (t1.f2 between 'a' and 'z' or t1.f1 = 'a')"
|
||||
"index_condition": "t1.f1 is null",
|
||||
"attached_condition": "t1.f2 is null and (t1.f2 between 'a' and 'z' or t1.f1 = 'a')"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2142,24 +2162,24 @@ EXPLAIN
|
||||
"operation": "UNION",
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "index_merge",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["f1", "f2"],
|
||||
"key_length": "13,33",
|
||||
"index_merge": {
|
||||
"intersect": {
|
||||
"range": {
|
||||
"key": "f1",
|
||||
"used_key_parts": ["f1"]
|
||||
},
|
||||
"range": {
|
||||
"key": "f2",
|
||||
"used_key_parts": ["f2"]
|
||||
}
|
||||
}
|
||||
"key": "f1",
|
||||
"key_length": "13",
|
||||
"used_key_parts": ["f1"],
|
||||
"ref": ["const"],
|
||||
"rowid_filter": {
|
||||
"range": {
|
||||
"key": "f1",
|
||||
"used_key_parts": ["f1"]
|
||||
},
|
||||
"rows": 1,
|
||||
"selectivity_pct": 1.5873
|
||||
},
|
||||
"rows": 1,
|
||||
"filtered": 1.5873,
|
||||
"attached_condition": "t1.f1 is null and t1.f2 is null and (t1.f2 between 'a' and 'z' or t1.f1 = 'a')"
|
||||
"index_condition": "t1.f1 is null",
|
||||
"attached_condition": "t1.f2 is null and (t1.f2 between 'a' and 'z' or t1.f1 = 'a')"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2184,7 +2204,7 @@ id y x
|
||||
explain extended select * from t1 join t2 on t1.id = t2.x where t2.y = 2 and t1.id = 1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 100.00 Using index
|
||||
1 SIMPLE t2 index_merge x,y y,x 5,5 NULL 1 100.00 Using intersect(y,x); Using where; Using index
|
||||
1 SIMPLE t2 ref x,y y 5 const 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select 1 AS `id`,`test`.`t2`.`y` AS `y`,`test`.`t2`.`x` AS `x` from `test`.`t1` join `test`.`t2` where `test`.`t2`.`y` = 2 and `test`.`t2`.`x` = 1
|
||||
drop table t1, t2;
|
||||
@ -2205,17 +2225,17 @@ count(*)
|
||||
6
|
||||
explain extended select count(*) from t1 where a in (22,83,11) and b=2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ref b,a b 5 const 59 3.30 Using where
|
||||
1 SIMPLE t1 range b,a a 5 NULL 33 5.90 Using index condition; Using where
|
||||
Warnings:
|
||||
Note 1003 select count(0) AS `count(*)` from `test`.`t1` where `test`.`t1`.`b` = 2 and `test`.`t1`.`a` in (22,83,11)
|
||||
select * from t1 where a in (22,83,11) and b=2;
|
||||
a b
|
||||
11 2
|
||||
11 2
|
||||
83 2
|
||||
11 2
|
||||
83 2
|
||||
22 2
|
||||
83 2
|
||||
83 2
|
||||
set optimizer_switch='rowid_filter=on';
|
||||
select count(*) from t1 where a in (22,83,11) and b=2;
|
||||
count(*)
|
||||
|
@ -2782,10 +2782,10 @@ 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
|
||||
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index key1 key1 5 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
|
||||
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index key1 key1 5 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
|
||||
select max(key1) from t1 where key1 <= 0.6158;
|
||||
max(key1)
|
||||
0.6158
|
||||
@ -3632,7 +3632,7 @@ t3.c IN ('bb','ee');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
|
||||
1 SIMPLE t2 range si si 5 NULL 2 Using index condition; Using where
|
||||
1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where
|
||||
1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using rowid filter
|
||||
EXPLAIN
|
||||
SELECT t3.a FROM t1,t2,t3
|
||||
WHERE t1.id = 8 AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
|
||||
@ -3640,7 +3640,7 @@ t3.c IN ('bb','ee');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
|
||||
1 SIMPLE t2 range si,ai si 5 NULL 2 Using index condition; Using where
|
||||
1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where
|
||||
1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using rowid filter
|
||||
DROP TABLE t1,t2,t3;
|
||||
CREATE TABLE t1 ( f1 int primary key, f2 int, f3 int, f4 int, f5 int, f6 int, checked_out int);
|
||||
CREATE TABLE t2 ( f11 int PRIMARY KEY );
|
||||
@ -3717,7 +3717,7 @@ COUNT(*)
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null IS NULL AND ID2_with_null=3 ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
|
||||
1 SIMPLE t1 ref|filter idx1,idx2 idx2|idx1 4|10 const 2 (6%) Using where; Using rowid filter
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null=3 AND ID2_with_null=3 IS NULL ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -3731,7 +3731,7 @@ CREATE UNIQUE INDEX idx1 ON t1(ID1_with_null,ID2_with_null);
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null IS NULL AND ID2_with_null=3 ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
|
||||
1 SIMPLE t1 ref|filter idx1,idx2 idx2|idx1 4|10 const 2 (7%) Using where; Using rowid filter
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null=3 AND ID2_with_null IS NULL ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -4031,7 +4031,7 @@ EXPLAIN SELECT COUNT(*) FROM t1 f1 INNER JOIN t1 f2
|
||||
ON ( f1.b=f2.b AND f1.a<f2.a )
|
||||
WHERE 1 AND f1.b NOT IN (100,2232,3343,51111);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE f1 index inx inx 10 NULL 7 Using where; Using index
|
||||
1 SIMPLE f1 range inx inx 5 NULL 7 Using where; Using index
|
||||
1 SIMPLE f2 ref inx inx 5 test.f1.b 1 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 INT, c2 INT);
|
||||
@ -5134,8 +5134,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t5 system PRIMARY NULL NULL NULL 1
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
|
||||
1 SIMPLE t2 ref f22 f22 5 const 1
|
||||
1 SIMPLE t6 ref f61 f61 5 const 1 Using where
|
||||
1 SIMPLE t4 ref f42 f42 5 const 1 Using index
|
||||
1 SIMPLE t6 ref f61 f61 5 const 1 Using where
|
||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
SELECT t2.f23 FROM
|
||||
(t1 LEFT JOIN (t2 JOIN t3 ON t2.f22=t3.f32) ON t1.f11=t3.f31)
|
||||
|
@ -2793,10 +2793,10 @@ 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
|
||||
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index key1 key1 5 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
|
||||
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index key1 key1 5 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
|
||||
select max(key1) from t1 where key1 <= 0.6158;
|
||||
max(key1)
|
||||
0.6158
|
||||
@ -3643,7 +3643,7 @@ t3.c IN ('bb','ee');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
|
||||
1 SIMPLE t2 range si si 5 NULL 2 Using index condition; Using where; Rowid-ordered scan
|
||||
1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using rowid filter
|
||||
EXPLAIN
|
||||
SELECT t3.a FROM t1,t2,t3
|
||||
WHERE t1.id = 8 AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
|
||||
@ -3651,7 +3651,7 @@ t3.c IN ('bb','ee');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
|
||||
1 SIMPLE t2 range si,ai si 5 NULL 2 Using index condition; Using where; Rowid-ordered scan
|
||||
1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using rowid filter
|
||||
DROP TABLE t1,t2,t3;
|
||||
CREATE TABLE t1 ( f1 int primary key, f2 int, f3 int, f4 int, f5 int, f6 int, checked_out int);
|
||||
CREATE TABLE t2 ( f11 int PRIMARY KEY );
|
||||
@ -3728,7 +3728,7 @@ COUNT(*)
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null IS NULL AND ID2_with_null=3 ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
|
||||
1 SIMPLE t1 ref|filter idx1,idx2 idx2|idx1 4|10 const 2 (6%) Using where; Using rowid filter
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null=3 AND ID2_with_null=3 IS NULL ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -3742,7 +3742,7 @@ CREATE UNIQUE INDEX idx1 ON t1(ID1_with_null,ID2_with_null);
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null IS NULL AND ID2_with_null=3 ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
|
||||
1 SIMPLE t1 ref|filter idx1,idx2 idx2|idx1 4|10 const 2 (7%) Using where; Using rowid filter
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null=3 AND ID2_with_null IS NULL ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -4042,7 +4042,7 @@ EXPLAIN SELECT COUNT(*) FROM t1 f1 INNER JOIN t1 f2
|
||||
ON ( f1.b=f2.b AND f1.a<f2.a )
|
||||
WHERE 1 AND f1.b NOT IN (100,2232,3343,51111);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE f1 index inx inx 10 NULL 7 Using where; Using index
|
||||
1 SIMPLE f1 range inx inx 5 NULL 7 Using where; Using index
|
||||
1 SIMPLE f2 ref inx inx 5 test.f1.b 1 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 INT, c2 INT);
|
||||
@ -5145,9 +5145,9 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t5 system PRIMARY NULL NULL NULL 1
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
|
||||
1 SIMPLE t2 ref f22 f22 5 const 1
|
||||
1 SIMPLE t6 ref f61 f61 5 const 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 SIMPLE t4 ref f42 f42 5 const 1 Using index
|
||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t6 ref f61 f61 5 const 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join)
|
||||
SELECT t2.f23 FROM
|
||||
(t1 LEFT JOIN (t2 JOIN t3 ON t2.f22=t3.f32) ON t1.f11=t3.f31)
|
||||
LEFT JOIN
|
||||
|
@ -2782,10 +2782,10 @@ 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
|
||||
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index key1 key1 5 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
|
||||
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index key1 key1 5 NULL 4 Using where; Using index
|
||||
1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
|
||||
select max(key1) from t1 where key1 <= 0.6158;
|
||||
max(key1)
|
||||
0.6158
|
||||
@ -3632,7 +3632,7 @@ t3.c IN ('bb','ee');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
|
||||
1 SIMPLE t2 range si si 5 NULL 2 Using index condition; Using where
|
||||
1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where
|
||||
1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using rowid filter
|
||||
EXPLAIN
|
||||
SELECT t3.a FROM t1,t2,t3
|
||||
WHERE t1.id = 8 AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
|
||||
@ -3640,7 +3640,7 @@ t3.c IN ('bb','ee');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
|
||||
1 SIMPLE t2 range si,ai si 5 NULL 2 Using index condition; Using where
|
||||
1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where
|
||||
1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using rowid filter
|
||||
DROP TABLE t1,t2,t3;
|
||||
CREATE TABLE t1 ( f1 int primary key, f2 int, f3 int, f4 int, f5 int, f6 int, checked_out int);
|
||||
CREATE TABLE t2 ( f11 int PRIMARY KEY );
|
||||
@ -3717,7 +3717,7 @@ COUNT(*)
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null IS NULL AND ID2_with_null=3 ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
|
||||
1 SIMPLE t1 ref|filter idx1,idx2 idx2|idx1 4|10 const 2 (6%) Using where; Using rowid filter
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null=3 AND ID2_with_null=3 IS NULL ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -3731,7 +3731,7 @@ CREATE UNIQUE INDEX idx1 ON t1(ID1_with_null,ID2_with_null);
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null IS NULL AND ID2_with_null=3 ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
|
||||
1 SIMPLE t1 ref|filter idx1,idx2 idx2|idx1 4|10 const 2 (7%) Using where; Using rowid filter
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE ID_better=1 AND ID1_with_null=3 AND ID2_with_null IS NULL ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -4031,7 +4031,7 @@ EXPLAIN SELECT COUNT(*) FROM t1 f1 INNER JOIN t1 f2
|
||||
ON ( f1.b=f2.b AND f1.a<f2.a )
|
||||
WHERE 1 AND f1.b NOT IN (100,2232,3343,51111);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE f1 index inx inx 10 NULL 7 Using where; Using index
|
||||
1 SIMPLE f1 range inx inx 5 NULL 7 Using where; Using index
|
||||
1 SIMPLE f2 ref inx inx 5 test.f1.b 1 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 INT, c2 INT);
|
||||
@ -5134,8 +5134,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t5 system PRIMARY NULL NULL NULL 1
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
|
||||
1 SIMPLE t2 ref f22 f22 5 const 1
|
||||
1 SIMPLE t6 ref f61 f61 5 const 1 Using where
|
||||
1 SIMPLE t4 ref f42 f42 5 const 1 Using index
|
||||
1 SIMPLE t6 ref f61 f61 5 const 1 Using where
|
||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
SELECT t2.f23 FROM
|
||||
(t1 LEFT JOIN (t2 JOIN t3 ON t2.f22=t3.f32) ON t1.f11=t3.f31)
|
||||
|
@ -73,12 +73,12 @@ order by
|
||||
s_acctbal desc, n_name, s_name, p_partkey;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY part ALL PRIMARY NULL NULL NULL 200 0.31 Using where; Using temporary; Using filesort
|
||||
1 PRIMARY partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 4 dbt3_s001.part.p_partkey 3 100.00 Using where
|
||||
1 PRIMARY partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey i_ps_partkey 4 dbt3_s001.part.p_partkey 3 100.00 Using where
|
||||
1 PRIMARY supplier eq_ref PRIMARY,i_s_nationkey PRIMARY 4 dbt3_s001.partsupp.ps_suppkey 1 100.00 Using where
|
||||
1 PRIMARY nation eq_ref PRIMARY,i_n_regionkey PRIMARY 4 dbt3_s001.supplier.s_nationkey 1 100.00 Using where
|
||||
1 PRIMARY region eq_ref PRIMARY PRIMARY 4 dbt3_s001.nation.n_regionkey 1 20.00 Using where
|
||||
2 DEPENDENT SUBQUERY region ALL PRIMARY NULL NULL NULL 5 20.00 Using where
|
||||
2 DEPENDENT SUBQUERY partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 4 dbt3_s001.part.p_partkey 3 100.00
|
||||
2 DEPENDENT SUBQUERY partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey i_ps_partkey 4 dbt3_s001.part.p_partkey 3 100.00
|
||||
2 DEPENDENT SUBQUERY supplier eq_ref PRIMARY,i_s_nationkey PRIMARY 4 dbt3_s001.partsupp.ps_suppkey 1 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY nation eq_ref PRIMARY,i_n_regionkey PRIMARY 4 dbt3_s001.supplier.s_nationkey 1 100.00 Using where
|
||||
Warnings:
|
||||
@ -119,7 +119,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY part ALL PRIMARY NULL NULL NULL 200 2.08 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY partsupp eq_ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 8 dbt3_s001.part.p_partkey,dbt3_s001.supplier.s_suppkey 1 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY region ALL PRIMARY NULL NULL NULL 5 20.00 Using where
|
||||
2 DEPENDENT SUBQUERY partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 4 dbt3_s001.part.p_partkey 3 100.00
|
||||
2 DEPENDENT SUBQUERY partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey i_ps_partkey 4 dbt3_s001.part.p_partkey 3 100.00
|
||||
2 DEPENDENT SUBQUERY supplier eq_ref PRIMARY,i_s_nationkey PRIMARY 4 dbt3_s001.partsupp.ps_suppkey 1 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY nation eq_ref PRIMARY,i_n_regionkey PRIMARY 4 dbt3_s001.supplier.s_nationkey 1 100.00 Using where
|
||||
Warnings:
|
||||
@ -489,7 +489,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
1 PRIMARY nation eq_ref PRIMARY PRIMARY 4 dbt3_s001.supplier.s_nationkey 1 100.00 Using where
|
||||
2 MATERIALIZED part ALL PRIMARY NULL NULL NULL 200 100.00 Using where
|
||||
2 MATERIALIZED partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 4 dbt3_s001.part.p_partkey 3 100.00 Using where
|
||||
2 MATERIALIZED partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey i_ps_partkey 4 dbt3_s001.part.p_partkey 3 100.00 Using where
|
||||
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'dbt3_s001.partsupp.ps_partkey' of SELECT #4 was resolved in SELECT #2
|
||||
@ -1850,7 +1850,7 @@ WHERE A.a=t1.a AND t2.b < 20);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 100 Using where
|
||||
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1
|
||||
2 DEPENDENT SUBQUERY t2 ref a,b a 5 test.A.id 1 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter
|
||||
EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE A const PRIMARY,a PRIMARY 4 const 1
|
||||
@ -1862,7 +1862,7 @@ WHERE A.a=t1.a AND t2.b < 20);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 100 Using where
|
||||
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1
|
||||
2 DEPENDENT SUBQUERY t2 ref a,b a 5 test.A.id 1 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter
|
||||
set optimizer_switch= @save_optimizer_switch;
|
||||
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
|
||||
drop table t1,t2;
|
||||
|
@ -1443,7 +1443,7 @@ EXPLAIN EXTENDED
|
||||
SELECT * FROM t1, t2
|
||||
WHERE a <> 'USARussian' AND b IS NULL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ref PRIMARY,b b 5 const 2 66.67 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY,b b 23 NULL 2 100.00 Using where; Using index
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 14 100.00 Using join buffer (flat, BNL join)
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`i` AS `i` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`a` <> 'USARussian' and `test`.`t1`.`b` is null
|
||||
@ -1860,7 +1860,7 @@ WHERE A.a=t1.a AND t2.b < 20);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL a 5 NULL 100 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 Using index
|
||||
2 DEPENDENT SUBQUERY t2 ref a,b a 5 test.A.id 1 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (19%) Using where; Using rowid filter
|
||||
EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE A const PRIMARY,a PRIMARY 4 const 1
|
||||
@ -1872,7 +1872,7 @@ WHERE A.a=t1.a AND t2.b < 20);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL a 5 NULL 100 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 Using index
|
||||
2 DEPENDENT SUBQUERY t2 ref a,b a 5 test.A.id 1 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (19%) Using where; Using rowid filter
|
||||
set optimizer_switch= @save_optimizer_switch;
|
||||
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
|
||||
drop table t1,t2;
|
||||
|
@ -74,7 +74,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE supplier ref PRIMARY,i_s_nationkey i_s_nationkey 5 dbt3_s001.nation.n_nationkey 1
|
||||
1 SIMPLE customer ref PRIMARY,i_c_nationkey i_c_nationkey 5 dbt3_s001.nation.n_nationkey 6
|
||||
1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (12%) Using where; Using rowid filter
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
select n_name, sum(l_extendedprice * (1 - l_discount)) as revenue
|
||||
from customer, orders, lineitem, supplier, nation, region
|
||||
where c_custkey = o_custkey and l_orderkey = o_orderkey
|
||||
@ -181,7 +181,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE supplier ref PRIMARY,i_s_nationkey i_s_nationkey 5 dbt3_s001.nation.n_nationkey 1
|
||||
1 SIMPLE customer ref PRIMARY,i_c_nationkey i_c_nationkey 5 dbt3_s001.nation.n_nationkey 6
|
||||
1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (12%) Using where; Using rowid filter
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
select n_name, sum(l_extendedprice * (1 - l_discount)) as revenue
|
||||
from customer, orders, lineitem, supplier, nation, region
|
||||
where c_custkey = o_custkey and l_orderkey = o_orderkey
|
||||
@ -214,10 +214,10 @@ order by o_year;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE region ALL PRIMARY NULL NULL NULL 5 Using where; Using temporary; Using filesort
|
||||
1 SIMPLE part ALL PRIMARY NULL NULL NULL 200 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity i_l_suppkey_partkey 5 dbt3_s001.part.p_partkey 30 Using index condition
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity i_l_partkey 5 dbt3_s001.part.p_partkey 30 Using where
|
||||
1 SIMPLE supplier eq_ref PRIMARY,i_s_nationkey PRIMARY 4 dbt3_s001.lineitem.l_suppkey 1 Using where
|
||||
1 SIMPLE orders eq_ref|filter PRIMARY,i_o_orderdate,i_o_custkey PRIMARY|i_o_orderdate 4|4 dbt3_s001.lineitem.l_orderkey 1 (27%) Using where; Using rowid filter
|
||||
1 SIMPLE n2 eq_ref PRIMARY PRIMARY 4 dbt3_s001.supplier.s_nationkey 1
|
||||
1 SIMPLE orders eq_ref PRIMARY,i_o_orderdate,i_o_custkey PRIMARY 4 dbt3_s001.lineitem.l_orderkey 1 Using where
|
||||
1 SIMPLE customer eq_ref PRIMARY,i_c_nationkey PRIMARY 4 dbt3_s001.orders.o_custkey 1 Using where
|
||||
1 SIMPLE n1 eq_ref PRIMARY,i_n_regionkey PRIMARY 4 dbt3_s001.customer.c_nationkey 1 Using where
|
||||
select o_year,
|
||||
@ -337,7 +337,7 @@ and o_orderkey=l_orderkey and p_partkey=l_partkey;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE part range PRIMARY,i_p_retailprice i_p_retailprice 9 NULL 1 Using index condition
|
||||
1 SIMPLE orders ref PRIMARY,i_o_orderdate i_o_orderdate 4 const 1
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey_partkey,i_l_partkey,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey_partkey,i_l_partkey,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey 4 dbt3_s001.orders.o_orderkey 4 Using where
|
||||
select o_orderkey, p_partkey
|
||||
from part, lineitem, orders
|
||||
where p_retailprice > 1100 and o_orderdate='1997-01-01'
|
||||
|
@ -246,7 +246,7 @@ order by o_year;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE region ALL PRIMARY NULL NULL NULL 5 Using where; Using temporary; Using filesort
|
||||
1 SIMPLE part ALL PRIMARY NULL NULL NULL 200 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity i_l_suppkey_partkey 5 dbt3_s001.part.p_partkey 30 Using index condition
|
||||
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity i_l_partkey 5 dbt3_s001.part.p_partkey 30 Using where
|
||||
1 SIMPLE supplier eq_ref PRIMARY,i_s_nationkey PRIMARY 4 dbt3_s001.lineitem.l_suppkey 1 Using where
|
||||
1 SIMPLE n2 eq_ref PRIMARY PRIMARY 4 dbt3_s001.supplier.s_nationkey 1
|
||||
1 SIMPLE orders eq_ref PRIMARY,i_o_orderdate,i_o_custkey PRIMARY 4 dbt3_s001.lineitem.l_orderkey 1 Using where
|
||||
|
@ -1503,7 +1503,7 @@ a
|
||||
explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 index a a 5 NULL 4 100.00 Using where; Using index
|
||||
1 PRIMARY t3 index a a 5 NULL 3 100.00 Using where; Using index
|
||||
1 PRIMARY t3 range a a 5 NULL 3 100.00 Using where; Using index
|
||||
1 PRIMARY t1 ref a a 10 test.t2.a,test.t3.a 116 100.00 Using index; FirstMatch(t2)
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1` join `test`.`t3`) where `test`.`t1`.`b` = `test`.`t3`.`a` and `test`.`t1`.`a` = `test`.`t2`.`a`
|
||||
@ -3176,7 +3176,7 @@ INSERT INTO t2 VALUES (1),(2),(3);
|
||||
EXPLAIN SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 2 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 3 Using index; Full scan on NULL key
|
||||
SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
a a IN (SELECT a FROM t1)
|
||||
1 1
|
||||
@ -7040,8 +7040,8 @@ SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 SUBQUERY <subquery3> eq_ref distinct_key distinct_key 4 test.t2.c 1
|
||||
2 SUBQUERY <subquery3> ALL distinct_key NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
|
@ -287,7 +287,7 @@ ORDER BY mirror_date ASC
|
||||
) AS calculated_result;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||
2 DERIVED t1 ALL date NULL NULL NULL 3 Using where; Using filesort
|
||||
2 DERIVED t1 range date date 6 NULL 3 Using index condition; Using where; Rowid-ordered scan; Using filesort
|
||||
SELECT * FROM (
|
||||
SELECT node_uid, date, mirror_date, @result := 0 AS result
|
||||
FROM t1
|
||||
@ -310,7 +310,7 @@ ORDER BY mirror_date ASC
|
||||
) AS calculated_result;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||
2 DERIVED t1 ALL date NULL NULL NULL 3 Using where; Using filesort
|
||||
2 DERIVED t1 range date date 6 NULL 3 Using index condition; Using where; Using filesort
|
||||
SELECT * FROM (
|
||||
SELECT node_uid, date, mirror_date, @result := 0 AS result
|
||||
FROM t1
|
||||
|
@ -96,10 +96,10 @@ explain extended
|
||||
select oref, a, a in (select a from t1 where oref=t2.oref) Z from t2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 4 100.00
|
||||
2 DEPENDENT SUBQUERY t1 index_subquery a a 5 func 2 100.00 Using where; Full scan on NULL key
|
||||
2 DEPENDENT SUBQUERY t1 ALL a NULL NULL NULL 8 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.oref' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`oref` AS `oref`,`test`.`t2`.`a` AS `a`,<expr_cache><`test`.`t2`.`a`,`test`.`t2`.`oref`>(<in_optimizer>(`test`.`t2`.`a`,<exists>(<index_lookup>(<cache>(`test`.`t2`.`a`) in t1 on a checking NULL where `test`.`t1`.`oref` = `test`.`t2`.`oref` having trigcond(`test`.`t1`.`a` is null))))) AS `Z` from `test`.`t2`
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`oref` AS `oref`,`test`.`t2`.`a` AS `a`,<expr_cache><`test`.`t2`.`a`,`test`.`t2`.`oref`>(<in_optimizer>(`test`.`t2`.`a`,<exists>(/* select#2 */ select `test`.`t1`.`a` from `test`.`t1` where `test`.`t1`.`oref` = `test`.`t2`.`oref` and trigcond(<cache>(`test`.`t2`.`a`) = `test`.`t1`.`a` or `test`.`t1`.`a` is null) having trigcond(`test`.`t1`.`a` is null)))) AS `Z` from `test`.`t2`
|
||||
flush status;
|
||||
select oref, a from t2 where a in (select a from t1 where oref=t2.oref);
|
||||
oref a
|
||||
|
@ -99,10 +99,10 @@ explain extended
|
||||
select oref, a, a in (select a from t1 where oref=t2.oref) Z from t2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 4 100.00
|
||||
2 DEPENDENT SUBQUERY t1 index_subquery a a 5 func 2 100.00 Using where; Full scan on NULL key
|
||||
2 DEPENDENT SUBQUERY t1 ALL a NULL NULL NULL 8 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.oref' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`oref` AS `oref`,`test`.`t2`.`a` AS `a`,<expr_cache><`test`.`t2`.`a`,`test`.`t2`.`oref`>(<in_optimizer>(`test`.`t2`.`a`,<exists>(<index_lookup>(<cache>(`test`.`t2`.`a`) in t1 on a checking NULL where `test`.`t1`.`oref` = `test`.`t2`.`oref` having trigcond(`test`.`t1`.`a` is null))))) AS `Z` from `test`.`t2`
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`oref` AS `oref`,`test`.`t2`.`a` AS `a`,<expr_cache><`test`.`t2`.`a`,`test`.`t2`.`oref`>(<in_optimizer>(`test`.`t2`.`a`,<exists>(/* select#2 */ select `test`.`t1`.`a` from `test`.`t1` where `test`.`t1`.`oref` = `test`.`t2`.`oref` and trigcond(<cache>(`test`.`t2`.`a`) = `test`.`t1`.`a` or `test`.`t1`.`a` is null) having trigcond(`test`.`t1`.`a` is null)))) AS `Z` from `test`.`t2`
|
||||
flush status;
|
||||
select oref, a from t2 where a in (select a from t1 where oref=t2.oref);
|
||||
oref a
|
||||
|
@ -1368,8 +1368,8 @@ GROUP BY SQ1_t1.f4));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
3 SUBQUERY SQ1_t1 index NULL f4 5 NULL 2 Using index; Using temporary
|
||||
3 SUBQUERY SQ1_t3 index f4 f4 5 NULL 2 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY SQ1_t3 range f4 f4 5 NULL 2 Using where; Using index; Using temporary
|
||||
3 SUBQUERY SQ1_t1 index NULL f4 5 NULL 2 Using index; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t1 WHERE
|
||||
(SELECT f2 FROM t2
|
||||
WHERE f4 <= ALL
|
||||
|
@ -105,7 +105,7 @@ explain extended
|
||||
select * from t1i where a1 in (select b1 from t2i where b1 > '0');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1i index NULL _it1_idx # NULL 3 100.00 Using where;
|
||||
2 MATERIALIZED t2i index it2i1,it2i3 it2i1 # NULL 5 100.00 Using where;
|
||||
2 MATERIALIZED t2i range it2i1,it2i3 it2i1 # NULL 5 100.00 Using where;
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <expr_cache><`test`.`t1i`.`a1`>(<in_optimizer>(`test`.`t1i`.`a1`,`test`.`t1i`.`a1` in ( <materialize> (/* select#2 */ select `test`.`t2i`.`b1` from `test`.`t2i` where `test`.`t2i`.`b1` > '0' ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key where `test`.`t1i`.`a1` = `<subquery2>`.`b1`))))
|
||||
select * from t1i where a1 in (select b1 from t2i where b1 > '0');
|
||||
@ -127,7 +127,7 @@ explain extended
|
||||
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1i index NULL _it1_idx # NULL 3 100.00 Using where;
|
||||
2 MATERIALIZED t2i index it2i1,it2i3 it2i3 # NULL 5 100.00 Using where;
|
||||
2 MATERIALIZED t2i range it2i1,it2i3 it2i3 # NULL 5 100.00 Using where;
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <expr_cache><`test`.`t1i`.`a1`,`test`.`t1i`.`a2`>(<in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (/* select#2 */ select `test`.`t2i`.`b1`,`test`.`t2i`.`b2` from `test`.`t2i` where `test`.`t2i`.`b1` > '0' ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key where `test`.`t1i`.`a1` = `<subquery2>`.`b1` and `test`.`t1i`.`a2` = `<subquery2>`.`b2`))))
|
||||
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0');
|
||||
@ -340,7 +340,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1i index NULL # # # 3 100.00 #
|
||||
3 MATERIALIZED t3i index NULL # # # 4 100.00 #
|
||||
4 MATERIALIZED t2i index it2i2 # # # 5 100.00 #
|
||||
2 MATERIALIZED t2i index it2i1,it2i3 # # # 5 100.00 #
|
||||
2 MATERIALIZED t2i range it2i1,it2i3 # # # 5 100.00 #
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <expr_cache><`test`.`t1i`.`a1`,`test`.`t1i`.`a2`>(<in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (/* select#2 */ select `test`.`t2i`.`b1`,`test`.`t2i`.`b2` from `test`.`t2i` where `test`.`t2i`.`b1` > '0' ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key where `test`.`t1i`.`a1` = `<subquery2>`.`b1` and `test`.`t1i`.`a2` = `<subquery2>`.`b2`)))) and <expr_cache><`test`.`t1i`.`a1`,`test`.`t1i`.`a2`>(<in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (/* select#3 */ select `test`.`t3i`.`c1`,`test`.`t3i`.`c2` from `test`.`t3i` where <expr_cache><`test`.`t3i`.`c1`,`test`.`t3i`.`c2`>(<in_optimizer>((`test`.`t3i`.`c1`,`test`.`t3i`.`c2`),(`test`.`t3i`.`c1`,`test`.`t3i`.`c2`) in ( <materialize> (/* select#4 */ select `test`.`t2i`.`b1`,`test`.`t2i`.`b2` from `test`.`t2i` where `test`.`t2i`.`b2` > '0' ), <primary_index_lookup>(`test`.`t3i`.`c1` in <temporary table> on distinct_key where `test`.`t3i`.`c1` = `<subquery4>`.`b1` and `test`.`t3i`.`c2` = `<subquery4>`.`b2`)))) ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key where `test`.`t1i`.`a1` = `<subquery3>`.`c1` and `test`.`t1i`.`a2` = `<subquery3>`.`c2`))))
|
||||
select * from t1i
|
||||
@ -423,7 +423,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
7 UNION t1i index NULL # # # 3 100.00 #
|
||||
9 MATERIALIZED t3i index NULL # # # 4 100.00 #
|
||||
10 MATERIALIZED t2i index it2i2 # # # 5 100.00 #
|
||||
8 MATERIALIZED t2i index it2i1,it2i3 # # # 5 100.00 #
|
||||
8 MATERIALIZED t2i range it2i1,it2i3 # # # 5 100.00 #
|
||||
NULL UNION RESULT <union1,7> ALL NULL # # # NULL NULL #
|
||||
Warnings:
|
||||
Note 1003 (/* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where <expr_cache><`test`.`t1`.`a1`,`test`.`t1`.`a2`>(<in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (/* select#2 */ select `test`.`t2`.`b1`,`test`.`t2`.`b2` from `test`.`t2` where <expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#3 */ select `test`.`t3`.`c2` from `test`.`t3` where `test`.`t3`.`c2` like '%02' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery3>`.`c2`)))) or <expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#4 */ select `test`.`t3`.`c2` from `test`.`t3` where `test`.`t3`.`c2` like '%03' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery4>`.`c2`)))) ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key where `test`.`t1`.`a1` = `<subquery2>`.`b1` and `test`.`t1`.`a2` = `<subquery2>`.`b2`)))) and <expr_cache><`test`.`t1`.`a1`,`test`.`t1`.`a2`>(<in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (/* select#5 */ select `test`.`t3`.`c1`,`test`.`t3`.`c2` from `test`.`t3` where <expr_cache><`test`.`t3`.`c1`,`test`.`t3`.`c2`>(<in_optimizer>((`test`.`t3`.`c1`,`test`.`t3`.`c2`),(`test`.`t3`.`c1`,`test`.`t3`.`c2`) in ( <materialize> (/* select#6 */ select `test`.`t2i`.`b1`,`test`.`t2i`.`b2` from `test`.`t2i` where `test`.`t2i`.`b2` > '0' ), <primary_index_lookup>(`test`.`t3`.`c1` in <temporary table> on distinct_key where `test`.`t3`.`c1` = `<subquery6>`.`b1` and `test`.`t3`.`c2` = `<subquery6>`.`b2`)))) ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key where `test`.`t1`.`a1` = `<subquery5>`.`c1` and `test`.`t1`.`a2` = `<subquery5>`.`c2`))))) union (/* select#7 */ select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <expr_cache><`test`.`t1i`.`a1`,`test`.`t1i`.`a2`>(<in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (/* select#8 */ select `test`.`t2i`.`b1`,`test`.`t2i`.`b2` from `test`.`t2i` where `test`.`t2i`.`b1` > '0' ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key where `test`.`t1i`.`a1` = `<subquery8>`.`b1` and `test`.`t1i`.`a2` = `<subquery8>`.`b2`)))) and <expr_cache><`test`.`t1i`.`a1`,`test`.`t1i`.`a2`>(<in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (/* select#9 */ select `test`.`t3i`.`c1`,`test`.`t3i`.`c2` from `test`.`t3i` where <expr_cache><`test`.`t3i`.`c1`,`test`.`t3i`.`c2`>(<in_optimizer>((`test`.`t3i`.`c1`,`test`.`t3i`.`c2`),(`test`.`t3i`.`c1`,`test`.`t3i`.`c2`) in ( <materialize> (/* select#10 */ select `test`.`t2i`.`b1`,`test`.`t2i`.`b2` from `test`.`t2i` where `test`.`t2i`.`b2` > '0' ), <primary_index_lookup>(`test`.`t3i`.`c1` in <temporary table> on distinct_key where `test`.`t3i`.`c1` = `<subquery10>`.`b1` and `test`.`t3i`.`c2` = `<subquery10>`.`b2`)))) ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key where `test`.`t1i`.`a1` = `<subquery9>`.`c1` and `test`.`t1i`.`a2` = `<subquery9>`.`c2`)))))
|
||||
@ -1142,7 +1142,7 @@ a
|
||||
explain extended
|
||||
select a from t1 group by a having a in (select c from t2 where d >= 20);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL it1a 4 NULL 7 100.00 Using index
|
||||
1 PRIMARY t1 range NULL it1a 4 NULL 8 100.00 Using index for group-by
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 7 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a` having <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (/* select#2 */ select `test`.`t2`.`c` from `test`.`t2` where `test`.`t2`.`d` >= 20 ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`c`))))
|
||||
@ -1154,7 +1154,7 @@ create index iab on t1(a, b);
|
||||
explain extended
|
||||
select a from t1 group by a having a in (select c from t2 where d >= 20);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL it1a 4 NULL 7 100.00 Using index
|
||||
1 PRIMARY t1 range NULL it1a 4 NULL 8 100.00 Using index for group-by
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 7 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a` having <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (/* select#2 */ select `test`.`t2`.`c` from `test`.`t2` where `test`.`t2`.`d` >= 20 ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`c`))))
|
||||
@ -1166,7 +1166,7 @@ explain extended
|
||||
select a from t1 group by a
|
||||
having a in (select c from t2 where d >= some(select e from t3 where max(b)=e));
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL iab 8 NULL 7 100.00 Using index
|
||||
1 PRIMARY t1 range NULL iab 4 NULL 8 100.00 Using index for group-by
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 7 100.00 Using where
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||
Warnings:
|
||||
@ -1889,8 +1889,8 @@ WHERE alias4.c = alias3.b
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
3 MATERIALIZED alias3 ALL NULL NULL NULL NULL 2
|
||||
3 MATERIALIZED alias4 index c c 11 NULL 2 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED alias3 ALL NULL NULL NULL NULL 2 Using where
|
||||
3 MATERIALIZED alias4 ref c c 11 test.alias3.b 2 Using where; Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# BUG#928048: Query containing IN subquery with OR in the where clause returns a wrong result
|
||||
@ -2276,7 +2276,7 @@ WHERE i3 = i2 AND f1 IN ( SELECT f3 FROM t3 ) );
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY <subquery3> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
2 DEPENDENT SUBQUERY t2 index i2 i2 5 NULL 3 100.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
2 DEPENDENT SUBQUERY t2 range i2 i2 5 NULL 3 100.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
2 DEPENDENT SUBQUERY t3 ref i3 i3 5 test.t2.i2 2 100.00 Using index
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 8 100.00
|
||||
Warnings:
|
||||
|
@ -289,7 +289,7 @@ AND Code = Country;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY CountryLanguage range PRIMARY,Language Language 30 NULL 44 Using index condition; Rowid-ordered scan
|
||||
1 PRIMARY Country eq_ref PRIMARY PRIMARY 3 world.CountryLanguage.Country 1 Using where
|
||||
3 MATERIALIZED CountryLanguage ref PRIMARY,Language Language 30 const 48 Using index condition
|
||||
3 DEPENDENT SUBQUERY CountryLanguage unique_subquery PRIMARY,Language PRIMARY 33 func,const 1 Using index; Using where
|
||||
set statement optimizer_switch='rowid_filter=off' for
|
||||
SELECT Country.Name
|
||||
FROM Country, CountryLanguage
|
||||
|
@ -196,8 +196,8 @@ ORDER BY field1 ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2 Using where; Using filesort
|
||||
1 PRIMARY alias1 eq_ref PRIMARY PRIMARY 4 alias2.f3 1 Using index
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2
|
||||
3 DEPENDENT SUBQUERY t1 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
3 DEPENDENT SUBQUERY t1 range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||
2 DERIVED t2 ALL NULL NULL NULL NULL 2
|
||||
SELECT alias2.f2 AS field1
|
||||
FROM t1 AS alias1 JOIN ( SELECT * FROM t2 ) AS alias2 ON alias2.f3 = alias1.f1
|
||||
@ -316,7 +316,7 @@ explain
|
||||
select c1 from t1 where c1 in (select kp1 from t2 where kp2 = 10 and c2 = 4) or c1 > 7;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
2 DEPENDENT SUBQUERY t2 index_subquery key1,key2,key3 key1 10 func,const 1 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ref key1,key2,key3 key3 5 const 1 Using where
|
||||
select c1 from t1 where c1 in (select kp1 from t2 where kp2 = 10 and c2 = 4) or c1 > 7;
|
||||
c1
|
||||
set @@optimizer_switch='default';
|
||||
|
@ -1507,7 +1507,7 @@ a
|
||||
explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 index a a 5 NULL 4 100.00 Using where; Using index
|
||||
1 PRIMARY t3 index a a 5 NULL 3 100.00 Using where; Using index
|
||||
1 PRIMARY t3 range a a 5 NULL 3 100.00 Using where; Using index
|
||||
1 PRIMARY t1 ref a a 10 test.t2.a,test.t3.a 116 100.00 Using index; FirstMatch(t2)
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1` join `test`.`t3`) where `test`.`t1`.`b` = `test`.`t3`.`a` and `test`.`t1`.`a` = `test`.`t2`.`a`
|
||||
@ -3179,7 +3179,7 @@ INSERT INTO t2 VALUES (1),(2),(3);
|
||||
EXPLAIN SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 2 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 3 Using index; Full scan on NULL key
|
||||
SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
a a IN (SELECT a FROM t1)
|
||||
1 1
|
||||
@ -7040,8 +7040,8 @@ SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 SUBQUERY <subquery3> eq_ref distinct_key distinct_key 4 test.t2.c 1
|
||||
2 SUBQUERY <subquery3> ALL distinct_key NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
|
@ -1510,7 +1510,7 @@ a
|
||||
explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 index a a 5 NULL 4 100.00 Using where; Using index
|
||||
1 PRIMARY t3 index a a 5 NULL 3 100.00 Using where; Using index
|
||||
1 PRIMARY t3 range a a 5 NULL 3 100.00 Using where; Using index
|
||||
1 PRIMARY t1 ref a a 10 test.t2.a,test.t3.a 116 100.00 Using index; FirstMatch(t2)
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1` join `test`.`t3`) where `test`.`t1`.`b` = `test`.`t3`.`a` and `test`.`t1`.`a` = `test`.`t2`.`a`
|
||||
@ -3181,7 +3181,7 @@ INSERT INTO t2 VALUES (1),(2),(3);
|
||||
EXPLAIN SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 2 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 3 Using index; Full scan on NULL key
|
||||
SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
a a IN (SELECT a FROM t1)
|
||||
1 1
|
||||
|
@ -3177,7 +3177,7 @@ INSERT INTO t2 VALUES (1),(2),(3);
|
||||
EXPLAIN SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 2 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 3 Using index; Full scan on NULL key
|
||||
SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
a a IN (SELECT a FROM t1)
|
||||
1 1
|
||||
@ -7031,8 +7031,8 @@ SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 SUBQUERY <subquery3> eq_ref distinct_key distinct_key 4 test.t2.c 1
|
||||
2 SUBQUERY <subquery3> ALL distinct_key NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
|
@ -1509,7 +1509,7 @@ a
|
||||
explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 index a a 5 NULL 4 100.00 Using where; Using index
|
||||
1 PRIMARY t3 index a a 5 NULL 3 100.00 Using where; Using index
|
||||
1 PRIMARY t3 range a a 5 NULL 3 100.00 Using where; Using index
|
||||
1 PRIMARY t1 ref a a 10 test.t2.a,test.t3.a 116 100.00 Using index; FirstMatch(t2)
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1` join `test`.`t3`) where `test`.`t1`.`b` = `test`.`t3`.`a` and `test`.`t1`.`a` = `test`.`t2`.`a`
|
||||
@ -3182,7 +3182,7 @@ INSERT INTO t2 VALUES (1),(2),(3);
|
||||
EXPLAIN SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 2 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t1 index_subquery a a 5 func 3 Using index; Full scan on NULL key
|
||||
SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
a a IN (SELECT a FROM t1)
|
||||
1 1
|
||||
@ -7046,8 +7046,8 @@ SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 SUBQUERY <subquery3> eq_ref distinct_key distinct_key 4 test.t2.c 1
|
||||
2 SUBQUERY <subquery3> ALL distinct_key NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
|
@ -1632,7 +1632,7 @@ Note 1003 /* select#1 */ select `test`.`t1`.`s1` AS `s1`,!<expr_cache><`test`.`t
|
||||
explain extended select s1, s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2') from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL s1 6 NULL 3 100.00 Using index
|
||||
2 MATERIALIZED t2 index s1 s1 6 NULL 2 50.00 Using where; Using index
|
||||
2 MATERIALIZED t2 range s1 s1 6 NULL 1 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`s1` AS `s1`,!<expr_cache><`test`.`t1`.`s1`>(<in_optimizer>(`test`.`t1`.`s1`,`test`.`t1`.`s1` in ( <materialize> (/* select#2 */ select `test`.`t2`.`s1` from `test`.`t2` where `test`.`t2`.`s1` < 'a2' ), <primary_index_lookup>(`test`.`t1`.`s1` in <temporary table> on distinct_key where `test`.`t1`.`s1` = `<subquery2>`.`s1`)))) AS `s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2')` from `test`.`t1`
|
||||
drop table t1,t2;
|
||||
@ -7031,8 +7031,8 @@ SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 SUBQUERY <subquery3> eq_ref distinct_key distinct_key 4 test.t2.c 1
|
||||
2 SUBQUERY <subquery3> ALL distinct_key NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
|
@ -2768,8 +2768,8 @@ SELECT * FROM t1 AS t1_1, t1 AS t1_2
|
||||
WHERE (t1_1.a, t1_2.a) IN ( SELECT a, b FROM v1 );
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1_1 ALL NULL NULL NULL NULL 11 Using where
|
||||
1 PRIMARY <derived3> ref key0 key0 5 test.t1_1.a 2 Start temporary
|
||||
1 PRIMARY t1_2 ALL NULL NULL NULL NULL 11 Using where; End temporary
|
||||
1 PRIMARY t1_2 ALL NULL NULL NULL NULL 11
|
||||
1 PRIMARY <derived3> ref key0 key0 5 test.t1_1.a 2 Using where; FirstMatch(t1_2)
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 11
|
||||
SELECT * FROM t1 AS t1_1, t1 AS t1_2
|
||||
WHERE (t1_1.a, t1_2.a) IN ( SELECT a, b FROM v1 );
|
||||
@ -2777,10 +2777,10 @@ a b a b
|
||||
3 1 9 1
|
||||
5 8 4 0
|
||||
3 9 9 1
|
||||
2 4 6 8
|
||||
2 4 4 0
|
||||
2 6 6 8
|
||||
2 4 6 8
|
||||
2 6 4 0
|
||||
2 6 6 8
|
||||
5 4 4 0
|
||||
7 7 7 7
|
||||
5 4 4 0
|
||||
@ -2927,8 +2927,8 @@ alias2.col_int_key = alias1.col_int_key
|
||||
WHERE alias1.pk = 58 OR alias1.col_varchar_key = 'o'
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY alias1 index_merge PRIMARY,col_int_key,col_varchar_key PRIMARY,col_varchar_key 4,4 NULL 2 Using sort_union(PRIMARY,col_varchar_key); Using where; Start temporary
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY alias2 ALL col_int_key NULL NULL NULL 12 Range checked for each record (index map: 0x2); End temporary
|
||||
SELECT *
|
||||
FROM t2
|
||||
|
@ -304,7 +304,7 @@ from t0 where a in
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func 1 Using where
|
||||
2 MATERIALIZED t1 index a a 5 NULL 10 Using where; Using index
|
||||
2 MATERIALIZED t1 range a a 5 NULL 10 Using where; Using index
|
||||
2 MATERIALIZED t2 ref a a 5 test.t1.a 1 Using index
|
||||
2 MATERIALIZED t3 ref a a 5 test.t1.a 1 Using index
|
||||
drop table t0, t1,t2,t3;
|
||||
@ -957,9 +957,9 @@ SELECT d FROM t2, t1
|
||||
WHERE a = d AND ( pk < 2 OR d = 'z' )
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL b NULL NULL NULL 19
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||
2 MATERIALIZED t2 index PRIMARY,d d 9 NULL 17 Using where; Using index
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||
1 PRIMARY t1 ref b b 4 test.t2.d 1
|
||||
2 MATERIALIZED t2 index_merge PRIMARY,d d,PRIMARY 4,4 NULL 2 Using sort_union(d,PRIMARY); Using where
|
||||
2 MATERIALIZED t1 ref a a 5 test.t2.d 1 Using where; Using index
|
||||
SELECT * FROM t1 WHERE b IN (
|
||||
SELECT d FROM t2, t1
|
||||
|
@ -315,7 +315,7 @@ from t0 where a in
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func 1 Using where
|
||||
2 MATERIALIZED t1 index a a 5 NULL 10 Using where; Using index
|
||||
2 MATERIALIZED t1 range a a 5 NULL 10 Using where; Using index
|
||||
2 MATERIALIZED t2 ref a a 5 test.t1.a 1 Using index
|
||||
2 MATERIALIZED t3 ref a a 5 test.t1.a 1 Using index
|
||||
drop table t0, t1,t2,t3;
|
||||
@ -970,9 +970,9 @@ SELECT d FROM t2, t1
|
||||
WHERE a = d AND ( pk < 2 OR d = 'z' )
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL b NULL NULL NULL 19
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||
2 MATERIALIZED t2 index PRIMARY,d d 9 NULL 17 Using where; Using index
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||
1 PRIMARY t1 ref b b 4 test.t2.d 1 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
2 MATERIALIZED t2 index_merge PRIMARY,d d,PRIMARY 4,4 NULL 2 Using sort_union(d,PRIMARY); Using where
|
||||
2 MATERIALIZED t1 ref a a 5 test.t2.d 1 Using where; Using index
|
||||
SELECT * FROM t1 WHERE b IN (
|
||||
SELECT d FROM t2, t1
|
||||
|
@ -306,7 +306,7 @@ from t0 where a in
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func 1 Using where
|
||||
2 MATERIALIZED t1 index a a 5 NULL 10 Using where; Using index
|
||||
2 MATERIALIZED t1 range a a 5 NULL 10 Using where; Using index
|
||||
2 MATERIALIZED t2 ref a a 5 test.t1.a 1 Using index
|
||||
2 MATERIALIZED t3 ref a a 5 test.t1.a 1 Using index
|
||||
drop table t0, t1,t2,t3;
|
||||
@ -959,9 +959,9 @@ SELECT d FROM t2, t1
|
||||
WHERE a = d AND ( pk < 2 OR d = 'z' )
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL b NULL NULL NULL 19
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||
2 MATERIALIZED t2 index PRIMARY,d d 9 NULL 17 Using where; Using index
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||
1 PRIMARY t1 ref b b 4 test.t2.d 1
|
||||
2 MATERIALIZED t2 index_merge PRIMARY,d d,PRIMARY 4,4 NULL 2 Using sort_union(d,PRIMARY); Using where
|
||||
2 MATERIALIZED t1 ref a a 5 test.t2.d 1 Using where; Using index
|
||||
SELECT * FROM t1 WHERE b IN (
|
||||
SELECT d FROM t2, t1
|
||||
@ -1727,7 +1727,7 @@ WHERE f1 IN ( SELECT f2 FROM t2 WHERE f2 > 'bar' )
|
||||
HAVING f1 != 'foo'
|
||||
ORDER BY f1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index f1 f1 11 NULL 2 Using where; Using index
|
||||
1 PRIMARY t1 range f1 f1 11 NULL 2 Using where; Using index
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 11 func 1
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
DROP TABLE t1,t2;
|
||||
@ -1932,20 +1932,20 @@ AND t3.id_product IN (SELECT id_product FROM t2 t2_3 WHERE t2_3.id_t2 = 18 OR t2
|
||||
AND t3.id_product IN (SELECT id_product FROM t2 t2_4 WHERE t2_4.id_t2 = 34 OR t2_4.id_t2 = 23)
|
||||
AND t3.id_product IN (SELECT id_product FROM t2 t2_5 WHERE t2_5.id_t2 = 29 OR t2_5.id_t2 = 28 OR t2_5.id_t2 = 26);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 12
|
||||
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 4 test.t2_2.id_product 1 Using where; Using index
|
||||
1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 4 func 1 Using where
|
||||
1 PRIMARY t3 index PRIMARY PRIMARY 4 NULL 18 Using index
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 Using where
|
||||
1 PRIMARY t5 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY <subquery6> eq_ref distinct_key distinct_key 4 func 1 Using where
|
||||
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 8 test.t3.id_product,const 1 Using where; Using index
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 Using where
|
||||
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 func 1 Using where
|
||||
1 PRIMARY <subquery6> eq_ref distinct_key distinct_key 4 func 1 Using where
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 Using where
|
||||
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 8 test.t3.id_product,const 1 Using where; Using index
|
||||
1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 4 func 1 Using where
|
||||
1 PRIMARY t1 index NULL PRIMARY 8 NULL 73 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t2_2 ref id_t2,id_product id_t2 5 const 12 Using where
|
||||
5 MATERIALIZED t2_4 range id_t2,id_product id_t2 5 NULL 18 Using index condition; Using where
|
||||
6 MATERIALIZED t2_5 range id_t2,id_product id_t2 5 NULL 31 Using index condition; Using where
|
||||
2 MATERIALIZED t2_1 ref id_t2,id_product id_t2 5 const 51
|
||||
3 MATERIALIZED t2_2 ref id_t2,id_product id_t2 5 const 12
|
||||
4 MATERIALIZED t2_3 range id_t2,id_product id_t2 5 NULL 33 Using index condition; Using where
|
||||
6 MATERIALIZED t2_5 range id_t2,id_product id_t2 5 NULL 31 Using index condition; Using where
|
||||
2 MATERIALIZED t2_1 ALL id_t2,id_product NULL NULL NULL 223 Using where
|
||||
5 MATERIALIZED t2_4 range id_t2,id_product id_t2 5 NULL 18 Using index condition; Using where
|
||||
set optimizer_switch='rowid_filter=default';
|
||||
drop table t1,t2,t3,t4,t5;
|
||||
set global innodb_stats_persistent= @innodb_stats_persistent_save;
|
||||
|
@ -2779,8 +2779,8 @@ SELECT * FROM t1 AS t1_1, t1 AS t1_2
|
||||
WHERE (t1_1.a, t1_2.a) IN ( SELECT a, b FROM v1 );
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1_1 ALL NULL NULL NULL NULL 11 Using where
|
||||
1 PRIMARY <derived3> ref key0 key0 5 test.t1_1.a 2 Start temporary
|
||||
1 PRIMARY t1_2 ALL NULL NULL NULL NULL 11 Using where; End temporary
|
||||
1 PRIMARY t1_2 ALL NULL NULL NULL NULL 11
|
||||
1 PRIMARY <derived3> ref key0 key0 5 test.t1_1.a 2 Using where; FirstMatch(t1_2)
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 11
|
||||
SELECT * FROM t1 AS t1_1, t1 AS t1_2
|
||||
WHERE (t1_1.a, t1_2.a) IN ( SELECT a, b FROM v1 );
|
||||
@ -2788,10 +2788,10 @@ a b a b
|
||||
3 1 9 1
|
||||
5 8 4 0
|
||||
3 9 9 1
|
||||
2 4 6 8
|
||||
2 4 4 0
|
||||
2 6 6 8
|
||||
2 4 6 8
|
||||
2 6 4 0
|
||||
2 6 6 8
|
||||
5 4 4 0
|
||||
7 7 7 7
|
||||
5 4 4 0
|
||||
@ -2938,8 +2938,8 @@ alias2.col_int_key = alias1.col_int_key
|
||||
WHERE alias1.pk = 58 OR alias1.col_varchar_key = 'o'
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY alias1 index_merge PRIMARY,col_int_key,col_varchar_key PRIMARY,col_varchar_key 4,4 NULL 2 Using sort_union(PRIMARY,col_varchar_key); Using where; Start temporary; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY alias1 index_merge PRIMARY,col_int_key,col_varchar_key PRIMARY,col_varchar_key 4,4 NULL 2 Using sort_union(PRIMARY,col_varchar_key); Using where; Start temporary
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY alias2 ALL col_int_key NULL NULL NULL 12 Range checked for each record (index map: 0x2); End temporary
|
||||
SELECT *
|
||||
FROM t2
|
||||
|
@ -107,10 +107,11 @@ a1 a2
|
||||
explain extended
|
||||
select * from t1i where a1 in (select b1 from t2i where b1 > '0');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2i index it2i1,it2i3 it2i1 # NULL 5 50.00 Using where; Using index; LooseScan
|
||||
1 PRIMARY t1i ref _it1_idx _it1_idx # _ref_ 1 100.00
|
||||
1 PRIMARY t1i range _it1_idx _it1_idx # NULL 3 100.00 Using where;
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key # func 1 100.00
|
||||
2 MATERIALIZED t2i range it2i1,it2i3 it2i1 # NULL 5 100.00 Using where;
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) where `test`.`t1i`.`a1` = `test`.`t2i`.`b1` and `test`.`t2i`.`b1` > '0'
|
||||
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) where `test`.`t2i`.`b1` > '0'
|
||||
select * from t1i where a1 in (select b1 from t2i where b1 > '0');
|
||||
a1 a2
|
||||
1 - 01 2 - 01
|
||||
@ -130,10 +131,11 @@ a1 a2
|
||||
explain extended
|
||||
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2i index it2i1,it2i2,it2i3 it2i3 # NULL 5 50.00 Using where; Using index; LooseScan
|
||||
1 PRIMARY t1i ref _it1_idx _it1_idx # _ref_ 1 100.00
|
||||
1 PRIMARY t1i range _it1_idx _it1_idx # NULL 3 100.00 Using where;
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key # func,func 1 100.00
|
||||
2 MATERIALIZED t2i range it2i1,it2i2,it2i3 it2i3 # NULL 5 100.00 Using where;
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) where `test`.`t1i`.`a1` = `test`.`t2i`.`b1` and `test`.`t1i`.`a2` = `test`.`t2i`.`b2` and `test`.`t2i`.`b1` > '0'
|
||||
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) where `test`.`t2i`.`b1` > '0'
|
||||
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0');
|
||||
a1 a2
|
||||
1 - 01 2 - 01
|
||||
@ -350,12 +352,14 @@ where (a1, a2) in (select b1, b2 from t2i where b1 > '0') and
|
||||
(a1, a2) in (select c1, c2 from t3i
|
||||
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2i index it2i1,it2i2,it2i3 # # # 5 50.00 #
|
||||
1 PRIMARY t1i ref it1i1,it1i2,it1i3 # # # 1 100.00 #
|
||||
1 PRIMARY t3i ref it3i1,it3i2,it3i3 # # # 1 100.00 #
|
||||
1 PRIMARY t2i ref it2i1,it2i2,it2i3 # # # 1 100.00 #
|
||||
1 PRIMARY t1i range it1i1,it1i2,it1i3 # # # 3 100.00 #
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key # # # 1 100.00 #
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key # # # 1 100.00 #
|
||||
3 MATERIALIZED t3i range it3i1,it3i2,it3i3 # # # 4 100.00 #
|
||||
3 MATERIALIZED t2i ref it2i1,it2i2,it2i3 # # # 1 100.00 #
|
||||
2 MATERIALIZED t2i range it2i1,it2i2,it2i3 # # # 5 100.00 #
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) semi join (`test`.`t2i` join `test`.`t3i`) where `test`.`t1i`.`a1` = `test`.`t2i`.`b1` and `test`.`t3i`.`c1` = `test`.`t2i`.`b1` and `test`.`t2i`.`b1` = `test`.`t2i`.`b1` and `test`.`t1i`.`a2` = `test`.`t2i`.`b2` and `test`.`t3i`.`c2` = `test`.`t2i`.`b2` and `test`.`t2i`.`b2` = `test`.`t2i`.`b2` and `test`.`t2i`.`b1` > '0' and `test`.`t2i`.`b2` > '0'
|
||||
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) semi join (`test`.`t2i` join `test`.`t3i`) where `test`.`t2i`.`b1` = `test`.`t3i`.`c1` and `test`.`t2i`.`b2` = `test`.`t3i`.`c2` and `test`.`t2i`.`b1` > '0' and `test`.`t3i`.`c2` > '0'
|
||||
select * from t1i
|
||||
where (a1, a2) in (select b1, b2 from t2i where b1 > '0') and
|
||||
(a1, a2) in (select c1, c2 from t3i
|
||||
@ -438,13 +442,15 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
2 MATERIALIZED t2 ALL NULL # # # 5 99.22 #
|
||||
4 MATERIALIZED t3 ALL NULL # # # 4 100.00 #
|
||||
3 MATERIALIZED t3 ALL NULL # # # 4 100.00 #
|
||||
7 UNION t2i index it2i1,it2i2,it2i3 # # # 5 50.00 #
|
||||
7 UNION t1i ref it1i1,it1i2,it1i3 # # # 1 100.00 #
|
||||
7 UNION t3i ref it3i1,it3i2,it3i3 # # # 1 100.00 #
|
||||
7 UNION t2i ref it2i1,it2i2,it2i3 # # # 1 100.00 #
|
||||
7 UNION t1i range it1i1,it1i2,it1i3 # # # 3 100.00 #
|
||||
7 UNION <subquery9> eq_ref distinct_key # # # 1 100.00 #
|
||||
7 UNION <subquery8> eq_ref distinct_key # # # 1 100.00 #
|
||||
9 MATERIALIZED t3i range it3i1,it3i2,it3i3 # # # 4 100.00 #
|
||||
9 MATERIALIZED t2i ref it2i1,it2i2,it2i3 # # # 1 100.00 #
|
||||
8 MATERIALIZED t2i range it2i1,it2i2,it2i3 # # # 5 100.00 #
|
||||
NULL UNION RESULT <union1,7> ALL NULL # # # NULL NULL #
|
||||
Warnings:
|
||||
Note 1003 (/* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) semi join (`test`.`t2i` join `test`.`t3`) where `test`.`t2i`.`b1` = `test`.`t3`.`c1` and `test`.`t2i`.`b2` = `test`.`t3`.`c2` and (<expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#3 */ select `test`.`t3`.`c2` from `test`.`t3` where `test`.`t3`.`c2` like '%02' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery3>`.`c2`)))) or <expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#4 */ select `test`.`t3`.`c2` from `test`.`t3` where `test`.`t3`.`c2` like '%03' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery4>`.`c2`))))) and `test`.`t3`.`c2` > '0') union (/* select#7 */ select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) semi join (`test`.`t2i` join `test`.`t3i`) where `test`.`t1i`.`a1` = `test`.`t2i`.`b1` and `test`.`t3i`.`c1` = `test`.`t2i`.`b1` and `test`.`t2i`.`b1` = `test`.`t2i`.`b1` and `test`.`t1i`.`a2` = `test`.`t2i`.`b2` and `test`.`t3i`.`c2` = `test`.`t2i`.`b2` and `test`.`t2i`.`b2` = `test`.`t2i`.`b2` and `test`.`t2i`.`b1` > '0' and `test`.`t2i`.`b2` > '0')
|
||||
Note 1003 (/* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) semi join (`test`.`t2i` join `test`.`t3`) where `test`.`t2i`.`b1` = `test`.`t3`.`c1` and `test`.`t2i`.`b2` = `test`.`t3`.`c2` and (<expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#3 */ select `test`.`t3`.`c2` from `test`.`t3` where `test`.`t3`.`c2` like '%02' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery3>`.`c2`)))) or <expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#4 */ select `test`.`t3`.`c2` from `test`.`t3` where `test`.`t3`.`c2` like '%03' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery4>`.`c2`))))) and `test`.`t3`.`c2` > '0') union (/* select#7 */ select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) semi join (`test`.`t2i` join `test`.`t3i`) where `test`.`t2i`.`b1` = `test`.`t3i`.`c1` and `test`.`t2i`.`b2` = `test`.`t3i`.`c2` and `test`.`t2i`.`b1` > '0' and `test`.`t3i`.`c2` > '0')
|
||||
(select * from t1
|
||||
where (a1, a2) in (select b1, b2 from t2
|
||||
where b2 in (select c2 from t3 where c2 LIKE '%02') or
|
||||
@ -1175,7 +1181,7 @@ a
|
||||
explain extended
|
||||
select a from t1 group by a having a in (select c from t2 where d >= 20);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL it1a 4 NULL 7 100.00 Using index
|
||||
1 PRIMARY t1 range NULL it1a 4 NULL 8 100.00 Using index for group-by
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 7 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a` having <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (/* select#2 */ select `test`.`t2`.`c` from `test`.`t2` where `test`.`t2`.`d` >= 20 ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`c`))))
|
||||
@ -1187,7 +1193,7 @@ create index iab on t1(a, b);
|
||||
explain extended
|
||||
select a from t1 group by a having a in (select c from t2 where d >= 20);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL it1a 4 NULL 7 100.00 Using index
|
||||
1 PRIMARY t1 range NULL it1a 4 NULL 8 100.00 Using index for group-by
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 7 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a` having <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (/* select#2 */ select `test`.`t2`.`c` from `test`.`t2` where `test`.`t2`.`d` >= 20 ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`c`))))
|
||||
@ -1199,7 +1205,7 @@ explain extended
|
||||
select a from t1 group by a
|
||||
having a in (select c from t2 where d >= some(select e from t3 where max(b)=e));
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL iab 8 NULL 7 100.00 Using index
|
||||
1 PRIMARY t1 range NULL iab 4 NULL 8 100.00 Using index for group-by
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 7 100.00 Using where
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||
Warnings:
|
||||
@ -2312,7 +2318,7 @@ WHERE i3 = i2 AND f1 IN ( SELECT f3 FROM t3 ) );
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY <subquery3> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
2 DEPENDENT SUBQUERY t2 index i2 i2 5 NULL 3 100.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
2 DEPENDENT SUBQUERY t2 range i2 i2 5 NULL 3 100.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||
2 DEPENDENT SUBQUERY t3 ref i3 i3 5 test.t2.i2 2 100.00 Using index
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 8 100.00
|
||||
Warnings:
|
||||
|
@ -47,8 +47,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
# Compare to this which really will have 50 record combinations:
|
||||
explain select * from t3 where a in (select max(t2.a) from t1, t2 group by t2.b, t1.b);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 50
|
||||
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 8 <subquery2>.max(t2.a) 1 Using where; Using index
|
||||
1 PRIMARY t3 index PRIMARY PRIMARY 8 NULL 100 Using index
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 test.t3.a 1 Using where
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
|
||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
||||
SET @save_optimizer_switch=@@optimizer_switch;
|
||||
@ -57,8 +57,8 @@ SET optimizer_switch='outer_join_with_cache=off';
|
||||
explain select * from t3
|
||||
where a in (select max(t2.a) from t1 left join t2 on t1.a=t2.a group by t2.b, t1.b);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 50
|
||||
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 8 <subquery2>.max(t2.a) 1 Using where; Using index
|
||||
1 PRIMARY t3 index PRIMARY PRIMARY 8 NULL 100 Using index
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 test.t3.a 1 Using where
|
||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using temporary
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using where
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
|
@ -333,11 +333,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
explain select t1.a from t1 left join t2 on t2.pk between 10 and 20;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4
|
||||
1 SIMPLE t2 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 1 Using where; Using index
|
||||
explain select t1.a from t1 left join t2 on t2.pk between 0.5 and 1.5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4
|
||||
1 SIMPLE t2 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
explain select t1.a from t1 left join t2 on t2.pk between 10 and 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4
|
||||
@ -408,7 +408,7 @@ select t1.*
|
||||
from t1 left join t2 on t2.pk=3 or t2.pk= 4;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4
|
||||
1 SIMPLE t2 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 2 Using where; Using index
|
||||
explain
|
||||
select t1.*
|
||||
from t1 left join t2 on t2.pk=3 or t2.pk= 3;
|
||||
@ -419,7 +419,7 @@ select t1.*
|
||||
from t1 left join t2 on (t2.pk=3 and t2.b=3) or (t2.pk= 4 and t2.b=3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4
|
||||
1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Using where
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 2 Using where
|
||||
drop table t1, t2;
|
||||
#
|
||||
# LPBUG#523593: Running RQG optimizer_no_subquery crashes MariaDB
|
||||
|
@ -766,7 +766,7 @@ CREATE TABLE t1 (a BIT(7), b BIT(9), KEY(a, b));
|
||||
INSERT INTO t1 VALUES(0, 0), (5, 3), (5, 6), (6, 4), (7, 0);
|
||||
EXPLAIN SELECT a+0, b+0 FROM t1 WHERE a > 4 and b < 7 ORDER BY 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index a a 5 NULL 5 Using where; Using index; Using filesort
|
||||
1 SIMPLE t1 range a a 2 NULL 4 Using where; Using index; Using filesort
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
create table t1(a bit(7));
|
||||
|
@ -625,7 +625,7 @@ id txt
|
||||
3 NULL
|
||||
explain select * from t1 where txt='Chevy' or txt is NULL;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL txt_index NULL NULL NULL 6 Using where
|
||||
1 SIMPLE t1 ref_or_null txt_index txt_index 23 const 3 Using where
|
||||
explain select * from t1 FORCE INDEX (`txt_index`) where txt='Chevy' or txt is NULL;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref_or_null txt_index txt_index 23 const 3 Using where
|
||||
|
@ -1932,16 +1932,14 @@ ALTER TABLE t2 ADD PRIMARY KEY(c1);
|
||||
ALTER TABLE t2 ADD PRIMARY KEY(c1);
|
||||
SELECT t1.* FROM t1 JOIN t2 ON t1.c1 COLLATE latin1_swedish_ci=t2.c1;
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT t1.* FROM t1 LEFT JOIN t2 ON t1.c1 COLLATE latin1_swedish_ci=t2.c1;
|
||||
c1
|
||||
a
|
||||
a
|
||||
# t2 should NOT be eliminated
|
||||
EXPLAIN SELECT t1.* FROM t1 LEFT JOIN t2 ON t1.c1 COLLATE latin1_swedish_ci=t2.c1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 1 NULL 1 Using where; Using index
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
CREATE TABLE t1 (c1 SET('a') CHARACTER SET latin1 PRIMARY KEY);
|
||||
@ -1959,16 +1957,14 @@ ALTER TABLE t2 ADD PRIMARY KEY(c1);
|
||||
ALTER TABLE t2 ADD PRIMARY KEY(c1);
|
||||
SELECT t1.* FROM t1 JOIN t2 ON t1.c1 COLLATE latin1_swedish_ci=t2.c1;
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT t1.* FROM t1 LEFT JOIN t2 ON t1.c1 COLLATE latin1_swedish_ci=t2.c1;
|
||||
c1
|
||||
a
|
||||
a
|
||||
# t2 should NOT be eliminated
|
||||
EXPLAIN SELECT t1.* FROM t1 LEFT JOIN t2 ON t1.c1 COLLATE latin1_swedish_ci=t2.c1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 1 NULL 1 Using where; Using index
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
CREATE TABLE t1 (c1 VARCHAR(10) CHARACTER SET latin1 PRIMARY KEY);
|
||||
@ -1986,16 +1982,14 @@ ALTER TABLE t2 ADD PRIMARY KEY(c1);
|
||||
ALTER TABLE t2 ADD PRIMARY KEY(c1);
|
||||
SELECT t1.* FROM t1 JOIN t2 ON t1.c1 COLLATE latin1_swedish_ci=t2.c1;
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT t1.* FROM t1 LEFT JOIN t2 ON t1.c1 COLLATE latin1_swedish_ci=t2.c1;
|
||||
c1
|
||||
a
|
||||
a
|
||||
# t2 should NOT be eliminated
|
||||
EXPLAIN SELECT t1.* FROM t1 LEFT JOIN t2 ON t1.c1 COLLATE latin1_swedish_ci=t2.c1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 1 NULL 1 Using where; Using index
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
#
|
||||
|
@ -241,7 +241,7 @@ pk >= 8
|
||||
HAVING x > '2000-02-06'
|
||||
ORDER BY col_time_nokey, pk;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE c ALL PRIMARY,col_varchar_key,col_varchar_key_2 NULL NULL NULL 6 Using where
|
||||
1 SIMPLE c index_merge PRIMARY,col_varchar_key,col_varchar_key_2 col_varchar_key,PRIMARY 5,4 NULL 2 Using union(col_varchar_key,PRIMARY); Using where
|
||||
SELECT COUNT(DISTINCT col_varchar_key) AS x
|
||||
FROM c
|
||||
WHERE col_varchar_key IN ('rr', 'rr') OR
|
||||
|
@ -205,7 +205,7 @@ outr.col_varchar_nokey in ('c', 'x', 'i')
|
||||
AND (outr.col_time_key IS NULL OR
|
||||
outr.col_datetime_key = '2009-09-27');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE outr ALL col_time_key,col_datetime_key NULL NULL NULL 4 x
|
||||
1 SIMPLE outr index_merge col_time_key,col_datetime_key col_time_key,col_datetime_key 4,6 NULL 2 x
|
||||
SELECT
|
||||
outr.col_time_key AS x
|
||||
FROM c AS outr
|
||||
|
@ -89,8 +89,8 @@ a b c
|
||||
2 -2 -2
|
||||
explain select * from t1 where c in (select c from t3 where c between -2 and -1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 index c c 5 NULL 6 Using where; Using index
|
||||
1 PRIMARY t1 ALL c NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY t3 range c c 5 NULL 2 Using where; Using index
|
||||
1 PRIMARY t1 ref c c 5 test.t3.c 1
|
||||
# select_type=UNION, type=system
|
||||
# select_type=UNION RESULT, type=<union1,2>
|
||||
select * from t1 union select * from t2;
|
||||
@ -146,7 +146,7 @@ count(distinct c)
|
||||
3
|
||||
explain select count(distinct c) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL c 5 NULL 6 Using index for group-by (scanning)
|
||||
1 SIMPLE t1 range NULL c 5 NULL 6 Using index for group-by
|
||||
###
|
||||
### filesort & range-based utils
|
||||
###
|
||||
|
@ -89,7 +89,7 @@ a b c
|
||||
2 -2 -2
|
||||
explain select * from t1 where c in (select c from t3 where c between -2 and -1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 index c c 5 NULL 6 Using where; Using index
|
||||
1 PRIMARY t3 range c c 5 NULL 2 Using where; Using index
|
||||
1 PRIMARY t1 ref c c 5 test.t3.c 1
|
||||
# select_type=UNION, type=system
|
||||
# select_type=UNION RESULT, type=<union1,2>
|
||||
@ -146,7 +146,7 @@ count(distinct c)
|
||||
3
|
||||
explain select count(distinct c) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL c 5 NULL 6 Using index for group-by (scanning)
|
||||
1 SIMPLE t1 range NULL c 5 NULL 6 Using index for group-by
|
||||
###
|
||||
### filesort & range-based utils
|
||||
###
|
||||
@ -1121,7 +1121,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
EXPLAIN SELECT * FROM t2 AS t1 WHERE b NOT IN (SELECT b FROM t1 FORCE INDEX(b));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||
2 SUBQUERY t1 index_subquery b b 5 func 2 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t1 index_subquery b b 5 func 3 Using index; Full scan on NULL key
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2, t3;
|
||||
#
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user