mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			187 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
drop table if exists t1, t2, t3,t4;
 | 
						|
create table t1 ( 
 | 
						|
pk1 int not NULL,
 | 
						|
key1 int(11),
 | 
						|
key2 int(11),
 | 
						|
PRIMARY KEY  (pk1),
 | 
						|
KEY key1 (key1),
 | 
						|
KEY key2 (key2)
 | 
						|
) engine=innodb;
 | 
						|
insert into t1 values (-5, 1, 1),
 | 
						|
(-100, 1, 1),
 | 
						|
(3, 1, 1),
 | 
						|
(0, 1, 1),
 | 
						|
(10, 1, 1);
 | 
						|
explain select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t1	index_merge	key1,key2	key1,key2	5,5	NULL	4	Using sort_union(key1,key2); Using where
 | 
						|
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | 
						|
pk1	key1	key2
 | 
						|
-100	1	1
 | 
						|
-5	1	1
 | 
						|
0	1	1
 | 
						|
3	1	1
 | 
						|
10	1	1
 | 
						|
drop table t1;
 | 
						|
create table t1 ( 
 | 
						|
pk1 int unsigned not NULL,
 | 
						|
key1 int(11),
 | 
						|
key2 int(11),
 | 
						|
PRIMARY KEY  (pk1),
 | 
						|
KEY key1 (key1),
 | 
						|
KEY key2 (key2)
 | 
						|
) engine=innodb;
 | 
						|
insert into t1 values (0, 1, 1),
 | 
						|
(0xFFFFFFFF, 1, 1),
 | 
						|
(0xFFFFFFFE, 1, 1),
 | 
						|
(1, 1, 1),
 | 
						|
(2, 1, 1);
 | 
						|
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | 
						|
pk1	key1	key2
 | 
						|
0	1	1
 | 
						|
1	1	1
 | 
						|
2	1	1
 | 
						|
4294967294	1	1
 | 
						|
4294967295	1	1
 | 
						|
drop table t1;
 | 
						|
create table t1 ( 
 | 
						|
pk1 char(4) not NULL,
 | 
						|
key1 int(11),
 | 
						|
key2 int(11),
 | 
						|
PRIMARY KEY  (pk1),
 | 
						|
KEY key1 (key1),
 | 
						|
KEY key2 (key2)
 | 
						|
) engine=innodb collate latin2_general_ci;
 | 
						|
insert into t1 values ('a1', 1, 1),
 | 
						|
('b2', 1, 1),
 | 
						|
('A3', 1, 1),
 | 
						|
('B4', 1, 1);
 | 
						|
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | 
						|
pk1	key1	key2
 | 
						|
a1	1	1
 | 
						|
A3	1	1
 | 
						|
b2	1	1
 | 
						|
B4	1	1
 | 
						|
drop table t1;
 | 
						|
create table t1 (
 | 
						|
pk1 int not NULL,
 | 
						|
pk2 char(4) not NULL collate latin1_german1_ci,
 | 
						|
pk3 char(4) not NULL collate latin1_bin,
 | 
						|
key1 int(11),
 | 
						|
key2 int(11),
 | 
						|
PRIMARY KEY  (pk1,pk2,pk3),
 | 
						|
KEY key1 (key1),
 | 
						|
KEY key2 (key2)
 | 
						|
) engine=innodb;
 | 
						|
insert into t1 values 
 | 
						|
(1, 'u', 'u',        1, 1),
 | 
						|
(1, 'u', char(0xEC), 1, 1),
 | 
						|
(1, 'u', 'x',        1, 1);
 | 
						|
insert ignore into t1 select pk1, char(0xEC), pk3, key1, key2  from t1;
 | 
						|
insert ignore into t1 select pk1, 'x', pk3, key1, key2  from t1 where pk2='u';
 | 
						|
insert ignore into t1 select 2, pk2, pk3, key1, key2  from t1;
 | 
						|
select * from t1;
 | 
						|
pk1	pk2	pk3	key1	key2
 | 
						|
1	ì	u	1	1
 | 
						|
1	ì	x	1	1
 | 
						|
1	ì	ì	1	1
 | 
						|
1	u	u	1	1
 | 
						|
1	u	x	1	1
 | 
						|
1	u	ì	1	1
 | 
						|
1	x	u	1	1
 | 
						|
1	x	x	1	1
 | 
						|
1	x	ì	1	1
 | 
						|
2	ì	u	1	1
 | 
						|
2	ì	x	1	1
 | 
						|
2	ì	ì	1	1
 | 
						|
2	u	u	1	1
 | 
						|
2	u	x	1	1
 | 
						|
2	u	ì	1	1
 | 
						|
2	x	u	1	1
 | 
						|
2	x	x	1	1
 | 
						|
2	x	ì	1	1
 | 
						|
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | 
						|
pk1	pk2	pk3	key1	key2
 | 
						|
1	ì	u	1	1
 | 
						|
1	ì	x	1	1
 | 
						|
1	ì	ì	1	1
 | 
						|
1	u	u	1	1
 | 
						|
1	u	x	1	1
 | 
						|
1	u	ì	1	1
 | 
						|
1	x	u	1	1
 | 
						|
1	x	x	1	1
 | 
						|
1	x	ì	1	1
 | 
						|
2	ì	u	1	1
 | 
						|
2	ì	x	1	1
 | 
						|
2	ì	ì	1	1
 | 
						|
2	u	u	1	1
 | 
						|
2	u	x	1	1
 | 
						|
2	u	ì	1	1
 | 
						|
2	x	u	1	1
 | 
						|
2	x	x	1	1
 | 
						|
2	x	ì	1	1
 | 
						|
alter table t1 drop primary key;
 | 
						|
select * from t1;
 | 
						|
pk1	pk2	pk3	key1	key2
 | 
						|
1	ì	u	1	1
 | 
						|
1	ì	x	1	1
 | 
						|
1	ì	ì	1	1
 | 
						|
1	u	u	1	1
 | 
						|
1	u	x	1	1
 | 
						|
1	u	ì	1	1
 | 
						|
1	x	u	1	1
 | 
						|
1	x	x	1	1
 | 
						|
1	x	ì	1	1
 | 
						|
2	ì	u	1	1
 | 
						|
2	ì	x	1	1
 | 
						|
2	ì	ì	1	1
 | 
						|
2	u	u	1	1
 | 
						|
2	u	x	1	1
 | 
						|
2	u	ì	1	1
 | 
						|
2	x	u	1	1
 | 
						|
2	x	x	1	1
 | 
						|
2	x	ì	1	1
 | 
						|
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | 
						|
pk1	pk2	pk3	key1	key2
 | 
						|
1	ì	u	1	1
 | 
						|
1	ì	x	1	1
 | 
						|
1	ì	ì	1	1
 | 
						|
1	u	u	1	1
 | 
						|
1	u	x	1	1
 | 
						|
1	u	ì	1	1
 | 
						|
1	x	u	1	1
 | 
						|
1	x	x	1	1
 | 
						|
1	x	ì	1	1
 | 
						|
2	ì	u	1	1
 | 
						|
2	ì	x	1	1
 | 
						|
2	ì	ì	1	1
 | 
						|
2	u	u	1	1
 | 
						|
2	u	x	1	1
 | 
						|
2	u	ì	1	1
 | 
						|
2	x	u	1	1
 | 
						|
2	x	x	1	1
 | 
						|
2	x	ì	1	1
 | 
						|
drop table t1;
 | 
						|
create table t1  (
 | 
						|
pk1 varchar(8) NOT NULL default '',
 | 
						|
pk2 varchar(4) NOT NULL default '',
 | 
						|
key1 int(11),
 | 
						|
key2 int(11),
 | 
						|
primary key(pk1, pk2),
 | 
						|
KEY key1 (key1),
 | 
						|
KEY key2 (key2)
 | 
						|
) engine=innodb;
 | 
						|
insert into t1 values ('','empt',2,2),
 | 
						|
('a','a--a',2,2),
 | 
						|
('bb','b--b',2,2),
 | 
						|
('ccc','c--c',2,2),
 | 
						|
('dddd','d--d',2,2);
 | 
						|
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | 
						|
pk1	pk2	key1	key2
 | 
						|
	empt	2	2
 | 
						|
a	a--a	2	2
 | 
						|
bb	b--b	2	2
 | 
						|
ccc	c--c	2	2
 | 
						|
dddd	d--d	2	2
 | 
						|
drop table t1;
 |