mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			729 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			729 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| DROP TABLE IF EXISTS t1,t2,t3,t4;
 | |
| DROP DATABASE IF EXISTS dbt3_s001;
 | |
| SET SESSION STORAGE_ENGINE='InnoDB';
 | |
| CREATE DATABASE dbt3_s001;
 | |
| use dbt3_s001;
 | |
| set @save_ext_key_optimizer_switch=@@optimizer_switch;
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select count(*) from lineitem where l_orderkey=130 and l_shipdate='1992-07-01';
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	ref	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	PRIMARY	4	const	5	Using where
 | |
| flush status;
 | |
| select count(*) from lineitem where l_orderkey=130 and l_shipdate='1992-07-01';
 | |
| count(*)
 | |
| 1
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	5
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select count(*) from lineitem where l_orderkey=130 and l_shipdate='1992-07-01';
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	ref	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	i_l_shipdate	8	const,const	1	Using index
 | |
| flush status;
 | |
| select count(*) from lineitem where l_orderkey=130 and l_shipdate='1992-07-01';
 | |
| count(*)
 | |
| 1
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	1
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select count(*) from lineitem 
 | |
| where l_orderkey=130 and l_linenumber=2 and l_shipdate='1992-07-01';
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	const	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	PRIMARY	8	const,const	1	
 | |
| flush status;
 | |
| select count(*) from lineitem 
 | |
| where l_orderkey=130 and l_linenumber=2 and l_shipdate='1992-07-01';
 | |
| count(*)
 | |
| 1
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select count(*) from lineitem
 | |
| where l_orderkey=130 and l_linenumber=2 and l_shipdate='1992-07-01';
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	const	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	PRIMARY	8	const,const	1	
 | |
| flush status;
 | |
| select count(*) from lineitem 
 | |
| where l_orderkey=130 and l_linenumber=2 and l_shipdate='1992-07-01';
 | |
| count(*)
 | |
| 1
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain 
 | |
| select count(*) from lineitem
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	ref	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	i_l_shipdate	4	const	6	Using where; Using index
 | |
| flush status;
 | |
| select count(*) from lineitem
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000;
 | |
| count(*)
 | |
| 1
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	6
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain 
 | |
| select count(*) from lineitem
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	range	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	i_l_shipdate	8	NULL	1	Using where; Using index
 | |
| flush status;
 | |
| select count(*) from lineitem
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000;
 | |
| count(*)
 | |
| 1
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	1
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select l_orderkey, l_linenumber from lineitem
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1001 and 2000;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	ref	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	i_l_shipdate	4	const	6	Using where; Using index
 | |
| flush status;
 | |
| select l_orderkey, l_linenumber from lineitem
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1001 and 2000;
 | |
| l_orderkey	l_linenumber
 | |
| 1088	3
 | |
| 1217	1
 | |
| 1221	3
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	6
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select l_orderkey, l_linenumber from lineitem
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1001 and 2000;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	range	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	i_l_shipdate	8	NULL	3	Using where; Using index
 | |
| flush status;
 | |
| select l_orderkey, l_linenumber from lineitem
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1001 and 2000;
 | |
| l_orderkey	l_linenumber
 | |
| 1088	3
 | |
| 1217	1
 | |
| 1221	3
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	3
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select min(l_orderkey) from lineitem where l_shipdate='1992-07-01';
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	ref	i_l_shipdate	i_l_shipdate	4	const	6	Using index
 | |
| flush status;
 | |
| select min(l_orderkey) from lineitem where l_shipdate='1992-07-01';
 | |
| min(l_orderkey)
 | |
| 130
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	6
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select min(l_orderkey) from lineitem where l_shipdate='1992-07-01';
 | |
| 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
 | |
| flush status;
 | |
| select min(l_orderkey) from lineitem where l_shipdate='1992-07-01';
 | |
| min(l_orderkey)
 | |
| 130
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select min(l_orderkey) from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1001 and 2000;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	ref	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	i_l_shipdate	4	const	6	Using where; Using index
 | |
| flush status;
 | |
| select min(l_orderkey) from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1001 and 2000;
 | |
| min(l_orderkey)
 | |
| 1088
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	6
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select min(l_orderkey) from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1001 and 2000;
 | |
| 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
 | |
| flush status;
 | |
| select min(l_orderkey) from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1001 and 2000;
 | |
| min(l_orderkey)
 | |
| 1088
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select max(l_linenumber) from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey=130;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	ref	PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity	PRIMARY	4	const	5	Using where
 | |
| flush status;
 | |
| select max(l_linenumber) from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey=130;
 | |
| max(l_linenumber)
 | |
| 2
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	5
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select max(l_linenumber) from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey=130;
 | |
| 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
 | |
| flush status;
 | |
| select max(l_linenumber) from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey=130;
 | |
| max(l_linenumber)
 | |
| 2
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select l_orderkey, l_linenumber 
 | |
| from lineitem use index (i_l_shipdate, i_l_receiptdate)
 | |
| where l_shipdate='1992-07-01' and l_orderkey=130 
 | |
| or l_receiptdate='1992-07-01' and l_orderkey=5603;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	index_merge	i_l_shipdate,i_l_receiptdate	i_l_shipdate,i_l_receiptdate	4,4	NULL	9	Using union(i_l_shipdate,i_l_receiptdate); Using where
 | |
| flush status;
 | |
| select l_orderkey, l_linenumber 
 | |
| from lineitem use index (i_l_shipdate, i_l_receiptdate)
 | |
| where l_shipdate='1992-07-01' and l_orderkey=130 
 | |
| or l_receiptdate='1992-07-01' and l_orderkey=5603;
 | |
| l_orderkey	l_linenumber
 | |
| 130	2
 | |
| 5603	2
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	2
 | |
| Handler_read_last	0
 | |
| Handler_read_next	9
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	9
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select l_orderkey, l_linenumber 
 | |
| from lineitem use index (i_l_shipdate, i_l_receiptdate)
 | |
| where l_shipdate='1992-07-01' and l_orderkey=130 
 | |
| or l_receiptdate='1992-07-01' and l_orderkey=5603;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	index_merge	i_l_shipdate,i_l_receiptdate	i_l_shipdate,i_l_receiptdate	8,8	NULL	2	Using sort_union(i_l_shipdate,i_l_receiptdate); Using where
 | |
| flush status;
 | |
| select l_orderkey, l_linenumber 
 | |
| from lineitem use index (i_l_shipdate, i_l_receiptdate)
 | |
| where l_shipdate='1992-07-01' and l_orderkey=130 
 | |
| or l_receiptdate='1992-07-01' and l_orderkey=5603;
 | |
| l_orderkey	l_linenumber
 | |
| 130	2
 | |
| 5603	2
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	2
 | |
| Handler_read_last	0
 | |
| Handler_read_next	2
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	2
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select l_orderkey, l_linenumber
 | |
| from lineitem use index (i_l_shipdate, i_l_receiptdate)
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000
 | |
| or l_receiptdate='1992-07-01' and l_orderkey between 5001 and 6000;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	index_merge	i_l_shipdate,i_l_receiptdate	i_l_shipdate,i_l_receiptdate	4,4	NULL	9	Using union(i_l_shipdate,i_l_receiptdate); Using where
 | |
| flush status;
 | |
| select l_orderkey, l_linenumber
 | |
| from lineitem use index (i_l_shipdate, i_l_receiptdate)
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000
 | |
| or l_receiptdate='1992-07-01' and l_orderkey between 5001 and 6000;
 | |
| l_orderkey	l_linenumber
 | |
| 130	2
 | |
| 5603	2
 | |
| 5959	3
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	2
 | |
| Handler_read_last	0
 | |
| Handler_read_next	9
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	9
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select l_orderkey, l_linenumber
 | |
| from lineitem use index (i_l_shipdate, i_l_receiptdate)
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000
 | |
| or l_receiptdate='1992-07-01' and l_orderkey between 5001 and 6000;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	index_merge	i_l_shipdate,i_l_receiptdate	i_l_shipdate,i_l_receiptdate	8,8	NULL	3	Using sort_union(i_l_shipdate,i_l_receiptdate); Using where
 | |
| flush status;
 | |
| select l_orderkey, l_linenumber
 | |
| from lineitem use index (i_l_shipdate, i_l_receiptdate)
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000
 | |
| or l_receiptdate='1992-07-01' and l_orderkey between 5001 and 6000;
 | |
| l_orderkey	l_linenumber
 | |
| 130	2
 | |
| 5603	2
 | |
| 5959	3
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	2
 | |
| Handler_read_last	0
 | |
| Handler_read_next	3
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	3
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select l_orderkey, l_linenumber from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000
 | |
| or l_receiptdate='1992-07-01' and l_orderkey between 5001 and 6000;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	index_merge	PRIMARY,i_l_shipdate,i_l_receiptdate,i_l_orderkey,i_l_orderkey_quantity	i_l_shipdate,PRIMARY,i_l_receiptdate,PRIMARY	4,4,4,4	NULL	2	Using union(intersect(i_l_shipdate,PRIMARY),intersect(i_l_receiptdate,PRIMARY)); Using where
 | |
| flush status;
 | |
| select l_orderkey, l_linenumber from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000
 | |
| or l_receiptdate='1992-07-01' and l_orderkey between 5001 and 6000;
 | |
| l_orderkey	l_linenumber
 | |
| 130	2
 | |
| 5603	2
 | |
| 5959	3
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	2
 | |
| Handler_read_last	0
 | |
| Handler_read_next	9
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	3
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select l_orderkey, l_linenumber from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000
 | |
| or l_receiptdate='1992-07-01' and l_orderkey between 5001 and 6000;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	index_merge	PRIMARY,i_l_shipdate,i_l_receiptdate,i_l_orderkey,i_l_orderkey_quantity	i_l_shipdate,i_l_receiptdate	8,8	NULL	3	Using sort_union(i_l_shipdate,i_l_receiptdate); Using where
 | |
| flush status;
 | |
| select l_orderkey, l_linenumber from lineitem 
 | |
| where l_shipdate='1992-07-01' and l_orderkey between 1 and 1000
 | |
| or l_receiptdate='1992-07-01' and l_orderkey between 5001 and 6000;
 | |
| l_orderkey	l_linenumber
 | |
| 130	2
 | |
| 5603	2
 | |
| 5959	3
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	2
 | |
| Handler_read_last	0
 | |
| Handler_read_next	3
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	3
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain 
 | |
| select max(l_orderkey) from lineitem
 | |
| where l_partkey between 1 and 10 group by l_partkey;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	range	i_l_suppkey_partkey,i_l_partkey	i_l_partkey	5	NULL	#	Using where; Using index
 | |
| flush status;
 | |
| select max(l_orderkey) from lineitem
 | |
| where l_partkey between 1 and 10 group by l_partkey;
 | |
| max(l_orderkey)
 | |
| 5984
 | |
| 5957
 | |
| 5892
 | |
| 5856
 | |
| 5959
 | |
| 5957
 | |
| 5794
 | |
| 5894
 | |
| 5859
 | |
| 5632
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	294
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain 
 | |
| select max(l_orderkey) from lineitem
 | |
| where l_partkey between 1 and 10 group by l_partkey;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	range	i_l_suppkey_partkey,i_l_partkey	i_l_partkey	5	NULL	#	Using where; Using index for group-by
 | |
| flush status;
 | |
| select max(l_orderkey) from lineitem
 | |
| where l_partkey between 1 and 10 group by l_partkey;
 | |
| max(l_orderkey)
 | |
| 5984
 | |
| 5957
 | |
| 5892
 | |
| 5856
 | |
| 5959
 | |
| 5957
 | |
| 5794
 | |
| 5894
 | |
| 5859
 | |
| 5632
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	21
 | |
| Handler_read_last	1
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain 
 | |
| select max(l_orderkey) from lineitem
 | |
| where l_suppkey in (1,4) group by l_suppkey;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	range	i_l_suppkey	i_l_suppkey	5	NULL	#	Using where; Using index
 | |
| flush status;
 | |
| select max(l_orderkey) from lineitem
 | |
| where l_suppkey in (1,4) group by l_suppkey;
 | |
| max(l_orderkey)
 | |
| 5988
 | |
| 5984
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	2
 | |
| Handler_read_last	0
 | |
| Handler_read_next	1230
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain 
 | |
| select max(l_orderkey) from lineitem
 | |
| where l_suppkey in (1,4) group by l_suppkey;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	lineitem	range	i_l_suppkey	i_l_suppkey	5	NULL	#	Using where; Using index for group-by
 | |
| flush status;
 | |
| select max(l_orderkey) from lineitem
 | |
| where l_suppkey in (1,4) group by l_suppkey;
 | |
| max(l_orderkey)
 | |
| 5988
 | |
| 5984
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	6
 | |
| Handler_read_last	1
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| create index i_p_retailprice on part(p_retailprice);
 | |
| set optimizer_switch='extended_keys=off';
 | |
| explain
 | |
| select o_orderkey, p_partkey
 | |
| from part use index (i_p_retailprice),
 | |
| lineitem use index (i_l_partkey), orders
 | |
| where p_retailprice > 1100 and o_orderdate='1997-01-01' 
 | |
| 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	i_p_retailprice	i_p_retailprice	9	NULL	#	Using where; Using index
 | |
| 1	SIMPLE	orders	ref	PRIMARY,i_o_orderdate	i_o_orderdate	4	const	#	Using index
 | |
| 1	SIMPLE	lineitem	ref	i_l_partkey	i_l_partkey	5	dbt3_s001.part.p_partkey	#	Using where; Using index
 | |
| flush status;
 | |
| select o_orderkey, p_partkey
 | |
| from part use index (i_p_retailprice),
 | |
| lineitem use index (i_l_partkey), orders
 | |
| where p_retailprice > 1100 and o_orderdate='1997-01-01' 
 | |
| and o_orderkey=l_orderkey and p_partkey=l_partkey;
 | |
| o_orderkey	p_partkey
 | |
| 5895	200
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	3
 | |
| Handler_read_last	0
 | |
| Handler_read_next	26
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| set optimizer_switch='extended_keys=on';
 | |
| explain
 | |
| select o_orderkey, p_partkey
 | |
| from part use index (i_p_retailprice),
 | |
| lineitem use index (i_l_partkey), orders
 | |
| where p_retailprice > 1100 and o_orderdate='1997-01-01' 
 | |
| 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	i_p_retailprice	i_p_retailprice	9	NULL	#	Using where; Using index
 | |
| 1	SIMPLE	orders	ref	PRIMARY,i_o_orderdate	i_o_orderdate	4	const	#	Using index
 | |
| 1	SIMPLE	lineitem	ref	i_l_partkey	i_l_partkey	9	dbt3_s001.part.p_partkey,dbt3_s001.orders.o_orderkey	#	Using index
 | |
| flush status;
 | |
| select o_orderkey, p_partkey
 | |
| from part use index (i_p_retailprice),
 | |
| lineitem use index (i_l_partkey), orders
 | |
| where p_retailprice > 1100 and o_orderdate='1997-01-01' 
 | |
| and o_orderkey=l_orderkey and p_partkey=l_partkey;
 | |
| o_orderkey	p_partkey
 | |
| 5895	200
 | |
| show status like 'handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	3
 | |
| Handler_read_last	0
 | |
| Handler_read_next	3
 | |
| Handler_read_prev	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| DROP DATABASE dbt3_s001;
 | |
| use test;
 | |
| #
 | |
| # LP Bug #914560: query containing IN subquery
 | |
| #                 + extended_keys = on
 | |
| #
 | |
| set @save_optimizer_switch=@@optimizer_switch;
 | |
| SET optimizer_switch='materialization=on,semijoin=on';
 | |
| SET optimizer_switch='extended_keys=on';
 | |
| CREATE TABLE t1 (a int, b int) ENGINE=MyISAM;
 | |
| INSERT INTO t1 VALUES (1,1), (2,2);
 | |
| SELECT * FROM t1 WHERE 2 IN (SELECT MAX(s1.a) FROM t1 AS s1, t1 AS s2);
 | |
| a	b
 | |
| 1	1
 | |
| 2	2
 | |
| EXPLAIN
 | |
| SELECT * FROM t1 WHERE 2 IN (SELECT MAX(s1.a) FROM t1 AS s1, t1 AS s2);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	PRIMARY	<subquery2>	const	distinct_key	distinct_key	4	const	1	
 | |
| 1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (flat, BNL join)
 | |
| 2	MATERIALIZED	s1	ALL	NULL	NULL	NULL	NULL	2	
 | |
| 2	MATERIALIZED	s2	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (flat, BNL join)
 | |
| DROP TABLE t1;
 | |
| set optimizer_switch=@save_optimizer_switch;
 | |
| #
 | |
| # LP Bug #915291: query using a materialized view
 | |
| #                 + extended_keys = on
 | |
| # (valgrinf complains fixed by the patch for bug #914560)
 | |
| #
 | |
| set @save_optimizer_switch=@@optimizer_switch;
 | |
| SET optimizer_switch = 'derived_with_keys=on';
 | |
| SET optimizer_switch = 'extended_keys=on';
 | |
| CREATE TABLE t1 (a varchar(1)) ENGINE=MyISAM;
 | |
| INSERT INTO t1 VALUES ('j'), ('v');
 | |
| CREATE TABLE t2 (b varchar(1)) ENGINE=MyISAM;
 | |
| INSERT INTO t2 VALUES ('j'), ('v');
 | |
| CREATE TABLE t3 (c varchar(1));
 | |
| INSERT INTO t2 VALUES ('m'), ('n');
 | |
| CREATE VIEW v
 | |
| AS SELECT DISTINCT * FROM t2 STRAIGHT_JOIN t3;
 | |
| SELECT * FROM t1, v WHERE a = b;
 | |
| a	b	c
 | |
| DROP VIEW v;
 | |
| DROP TABLE t1,t2,t3;
 | |
| set optimizer_switch=@save_optimizer_switch;
 | |
| #
 | |
| # LP Bug #921167: query containing IN subquery
 | |
| #                 + extended_keys = on 
 | |
| #
 | |
| CREATE TABLE t1 (
 | |
| a int NOT NULL, b varchar(1) NOT NULL, KEY(a), KEY(b,a)
 | |
| ) ENGINE=MyISAM;
 | |
| INSERT INTO t1 VALUES
 | |
| (0,'j'), (8,'v'), (1,'c'), (8,'m'), (9,'d'), 
 | |
| (24,'d'), (6,'y'), (1,'t'), (6,'d'), (2,'s');
 | |
| CREATE TABLE t2 (
 | |
| c int NOT NULL PRIMARY KEY
 | |
| ) ENGINE=MyISAM;
 | |
| INSERT INTO t2 VALUES
 | |
| (10), (11), (12), (13), (14), 
 | |
| (15), (16), (17), (18), (19), (24);
 | |
| set @save_optimizer_switch=@@optimizer_switch;
 | |
| SET optimizer_switch = 'extended_keys=off';
 | |
| EXPLAIN
 | |
| SELECT a FROM t1 AS t, t2 
 | |
| WHERE c = a AND b IN (SELECT b FROM t1, t2 WHERE b = t.b);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	PRIMARY	t	index	a,b	b	7	NULL	10	Using index
 | |
| 1	PRIMARY	t1	ref	b	b	3	test.t.b	2	Using index
 | |
| 1	PRIMARY	t2	index	NULL	PRIMARY	4	NULL	11	Using index; FirstMatch(t)
 | |
| 1	PRIMARY	t2	eq_ref	PRIMARY	PRIMARY	4	test.t.a	1	Using index
 | |
| SELECT a FROM t1 AS t, t2 
 | |
| WHERE c = a AND b IN (SELECT b FROM t1, t2 WHERE b = t.b);
 | |
| a
 | |
| 24
 | |
| SET optimizer_switch = 'extended_keys=on';
 | |
| EXPLAIN
 | |
| SELECT a FROM t1 AS t, t2 
 | |
| WHERE c = a AND b IN (SELECT b FROM t1, t2 WHERE b = t.b);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	PRIMARY	t	index	a,b	b	7	NULL	10	Using index
 | |
| 1	PRIMARY	t1	ref	b	b	3	test.t.b	2	Using index
 | |
| 1	PRIMARY	t2	index	NULL	PRIMARY	4	NULL	11	Using index; FirstMatch(t)
 | |
| 1	PRIMARY	t2	eq_ref	PRIMARY	PRIMARY	4	test.t.a	1	Using index
 | |
| SELECT a FROM t1 AS t, t2 
 | |
| WHERE c = a AND b IN (SELECT b FROM t1, t2 WHERE b = t.b);
 | |
| a
 | |
| 24
 | |
| set optimizer_switch=@save_optimizer_switch;
 | |
| DROP TABLE t1,t2;
 | |
| #
 | |
| # LP Bug #923236: hash join + extended_keys = on 
 | |
| #
 | |
| CREATE TABLE t1 (a int) ENGINE=MyISAM;
 | |
| CREATE TABLE t2 (b int) ENGINE=MyISAM;
 | |
| INSERT INTO t1 (a) VALUES (4), (6);
 | |
| INSERT INTO t2 (b) VALUES (0), (8);
 | |
| set @save_optimizer_switch=@@optimizer_switch;
 | |
| SET join_cache_level=3;
 | |
| SET optimizer_switch='join_cache_hashed=on';
 | |
| SET optimizer_switch='join_cache_bka=on';
 | |
| SET optimizer_switch='extended_keys=on';
 | |
| EXPLAIN
 | |
| SELECT * FROM t1, t2 WHERE b=a;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
 | |
| 1	SIMPLE	t2	hash_ALL	NULL	#hash#$hj	5	test.t1.a	2	Using where; Using join buffer (flat, BNLH join)
 | |
| SELECT * FROM t1, t2 WHERE b=a;
 | |
| a	b
 | |
| set optimizer_switch=@save_optimizer_switch;
 | |
| DROP TABLE t1,t2;
 | |
| set optimizer_switch=@save_ext_key_optimizer_switch;
 | |
| SET SESSION STORAGE_ENGINE=DEFAULT;
 |