summaryrefslogtreecommitdiff
path: root/mysql-test/r/explain_non_select.result
blob: aa592f0b198855ba083717cf3b98d0dcab246f2b (plain)
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
drop table if exists t0;
create table t0 (a int) engine=myisam;
insert into t0 values (1),(2),(3),(4),(5),(6),(7),(8);
#
#  Tests for single-table DELETE
# 
explain select * from t0 where a=3;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	8	Using where
explain delete from t0 where a=3;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	8	Using where
# DELETE without WHERE is a special case:
explain delete from t0;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Deleting all rows
create table t1 (a int, b int, filler char(100), key(a), key(b));
insert into t1 
select A.a+10*B.a + 10*C.a, A.a+10*B.a + 10*C.a, 'filler' 
from t0 A, t0 B, t0 C;
# This should use an index,  possible_keys=NULL because there is no WHERE
explain delete from t1 order by a limit 2;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	NULL	a	NULL	NULL	512	
# This should use range, possible_keys={a,b}
explain delete from t1 where a<20 and b < 10;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	a,b	a	5	NULL	1	Using where
# This should use ALL + filesort
explain delete from t1 order by a+1 limit 2;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	512	Using filesort
# This should use range + using filesort
explain delete from t1 where a<20 order by b limit 2;
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 filesort
# Try some subqueries:
explain delete from t1 where a < (select max(a) from t0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	t1	range	a	a	5	NULL	1	Using where
2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Query plan already deleted
explain delete from t1 where a < (select max(a) from t0 where a < t1.b);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	512	Using where
2	DEPENDENT SUBQUERY	t0	ALL	NULL	NULL	NULL	NULL	8	Using where
#
#  Tests for multi-table DELETE
# 
explain delete t1 from t0, t1 where t0.a = t1.a;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	8	Using where
1	SIMPLE	t1	ref	a	a	5	test.t0.a	4	Using index
drop table t0, t1;