2005-12-22 10:29:00 +01:00
|
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
2009-12-22 18:59:37 +01:00
|
|
|
#
|
2010-08-26 17:14:18 +02:00
|
|
|
# Bug#53806: Wrong estimates for range query in partitioned MyISAM table
|
|
|
|
# Bug#46754: 'rows' field doesn't reflect partition pruning
|
|
|
|
#
|
|
|
|
CREATE TABLE t1 (a INT PRIMARY KEY)
|
|
|
|
PARTITION BY RANGE (a) (
|
|
|
|
PARTITION p0 VALUES LESS THAN (1),
|
|
|
|
PARTITION p1 VALUES LESS THAN (2),
|
|
|
|
PARTITION p2 VALUES LESS THAN (3),
|
|
|
|
PARTITION p3 VALUES LESS THAN (4),
|
|
|
|
PARTITION p4 VALUES LESS THAN (5),
|
|
|
|
PARTITION p5 VALUES LESS THAN (6),
|
|
|
|
PARTITION max VALUES LESS THAN MAXVALUE);
|
|
|
|
INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7),(8);
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
|
|
|
|
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
|
|
|
|
# # # # # # # # # 9 #
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
# # # # # # # # # 3 #
|
|
|
|
DROP TABLE t1;
|
|
|
|
#
|
2009-12-22 18:59:37 +01:00
|
|
|
# Bug#49742: Partition Pruning not working correctly for RANGE
|
|
|
|
#
|
|
|
|
CREATE TABLE t1 (a INT PRIMARY KEY)
|
|
|
|
PARTITION BY RANGE (a) (
|
|
|
|
PARTITION p0 VALUES LESS THAN (1),
|
|
|
|
PARTITION p1 VALUES LESS THAN (2),
|
|
|
|
PARTITION p2 VALUES LESS THAN (3),
|
|
|
|
PARTITION p3 VALUES LESS THAN (4),
|
|
|
|
PARTITION p4 VALUES LESS THAN (5),
|
|
|
|
PARTITION p5 VALUES LESS THAN (6),
|
|
|
|
PARTITION max VALUES LESS THAN MAXVALUE);
|
|
|
|
INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7),(8);
|
|
|
|
SELECT * FROM t1 WHERE a < 1;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 2;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 3;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 4;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 5;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 6;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 7;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
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 range PRIMARY PRIMARY 4 NULL 9 Using where; Using index
|
|
|
|
SELECT * FROM t1 WHERE a <= 1;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1 index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a <= 2;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1,p2 index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a <= 3;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1,p2,p3 index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a <= 4;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 4;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1,p2,p3,p4 index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a <= 5;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1,p2,p3,p4,p5 index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a <= 6;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
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 range PRIMARY PRIMARY 4 NULL 9 Using where; Using index
|
|
|
|
SELECT * FROM t1 WHERE a <= 7;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
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 range PRIMARY PRIMARY 4 NULL 9 Using where; Using index
|
|
|
|
SELECT * FROM t1 WHERE a = 1;
|
|
|
|
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 p1 system PRIMARY NULL NULL NULL 1
|
|
|
|
SELECT * FROM t1 WHERE a = 2;
|
|
|
|
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 p2 system PRIMARY NULL NULL NULL 1
|
|
|
|
SELECT * FROM t1 WHERE a = 3;
|
|
|
|
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 p3 system PRIMARY NULL NULL NULL 1
|
|
|
|
SELECT * FROM t1 WHERE a = 4;
|
|
|
|
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 p4 system PRIMARY NULL NULL NULL 1
|
|
|
|
SELECT * FROM t1 WHERE a = 5;
|
|
|
|
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 p5 system PRIMARY NULL NULL NULL 1
|
|
|
|
SELECT * FROM t1 WHERE a = 6;
|
|
|
|
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 max const PRIMARY PRIMARY 4 const 1 Using index
|
|
|
|
SELECT * FROM t1 WHERE a = 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 max const PRIMARY PRIMARY 4 const 1 Using index
|
|
|
|
SELECT * FROM t1 WHERE a >= 1;
|
|
|
|
a
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p1,p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 8 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a >= 2;
|
|
|
|
a
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a >= 3;
|
|
|
|
a
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a >= 4;
|
|
|
|
a
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 4;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p4,p5,max index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a >= 5;
|
|
|
|
a
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p5,max index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a >= 6;
|
|
|
|
a
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 6;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a > 1;
|
|
|
|
a
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a > 2;
|
|
|
|
a
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a > 3;
|
|
|
|
a
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p4,p5,max index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a > 4;
|
|
|
|
a
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 4;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p5,max index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a > 5;
|
|
|
|
a
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
DROP TABLE t1;
|
|
|
|
CREATE TABLE t1 (a INT PRIMARY KEY)
|
|
|
|
PARTITION BY RANGE (a) (
|
|
|
|
PARTITION p0 VALUES LESS THAN (1),
|
|
|
|
PARTITION p1 VALUES LESS THAN (2),
|
|
|
|
PARTITION p2 VALUES LESS THAN (3),
|
|
|
|
PARTITION p3 VALUES LESS THAN (4),
|
|
|
|
PARTITION p4 VALUES LESS THAN (5),
|
|
|
|
PARTITION max VALUES LESS THAN MAXVALUE);
|
|
|
|
INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7);
|
|
|
|
SELECT * FROM t1 WHERE a < 1;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 2;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 3;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 4;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 5;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
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
|
|
|
|
SELECT * FROM t1 WHERE a < 6;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
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 range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
|
|
|
|
SELECT * FROM t1 WHERE a <= 1;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1 index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a <= 2;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1,p2 index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a <= 3;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1,p2,p3 index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a <= 4;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 4;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1,p2,p3,p4 index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a <= 5;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
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 range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
|
|
|
|
SELECT * FROM t1 WHERE a <= 6;
|
|
|
|
a
|
|
|
|
-1
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
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 range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
|
|
|
|
SELECT * FROM t1 WHERE a = 1;
|
|
|
|
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 p1 system PRIMARY NULL NULL NULL 1
|
|
|
|
SELECT * FROM t1 WHERE a = 2;
|
|
|
|
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 p2 system PRIMARY NULL NULL NULL 1
|
|
|
|
SELECT * FROM t1 WHERE a = 3;
|
|
|
|
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 p3 system PRIMARY NULL NULL NULL 1
|
|
|
|
SELECT * FROM t1 WHERE a = 4;
|
|
|
|
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 p4 system PRIMARY NULL NULL NULL 1
|
|
|
|
SELECT * FROM t1 WHERE a = 5;
|
|
|
|
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 max const PRIMARY PRIMARY 4 const 1 Using index
|
|
|
|
SELECT * FROM t1 WHERE a = 6;
|
|
|
|
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 max const PRIMARY PRIMARY 4 const 1 Using index
|
|
|
|
SELECT * FROM t1 WHERE a >= 1;
|
|
|
|
a
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p1,p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 7 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a >= 2;
|
|
|
|
a
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a >= 3;
|
|
|
|
a
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p3,p4,max index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a >= 4;
|
|
|
|
a
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 4;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p4,max index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a >= 5;
|
|
|
|
a
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a > 1;
|
|
|
|
a
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 6 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a > 2;
|
|
|
|
a
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p3,p4,max index PRIMARY PRIMARY 4 NULL 5 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a > 3;
|
|
|
|
a
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p4,max index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
SELECT * FROM t1 WHERE a > 4;
|
|
|
|
a
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 4;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 max index PRIMARY PRIMARY 4 NULL 3 Using where; Using index
|
2009-12-22 18:59:37 +01:00
|
|
|
DROP TABLE t1;
|
2009-08-26 12:59:49 +02:00
|
|
|
# test of RANGE and index
|
|
|
|
CREATE TABLE t1 (a DATE, KEY(a))
|
|
|
|
PARTITION BY RANGE (TO_DAYS(a))
|
|
|
|
(PARTITION `pNULL` VALUES LESS THAN (0),
|
|
|
|
PARTITION `p0001-01-01` VALUES LESS THAN (366 + 1),
|
|
|
|
PARTITION `p1001-01-01` VALUES LESS THAN (TO_DAYS('1001-01-01') + 1),
|
|
|
|
PARTITION `p2001-01-01` VALUES LESS THAN (TO_DAYS('2001-01-01') + 1));
|
|
|
|
INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'),
|
|
|
|
('1001-00-00'), ('1001-01-01'), ('1002-00-00'), ('2001-01-01');
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-01-01';
|
|
|
|
a
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
2009-09-01 14:53:27 +02:00
|
|
|
# Disabling warnings for the invalid date
|
2009-08-26 12:59:49 +02:00
|
|
|
SELECT * FROM t1 WHERE a < '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1999-02-31';
|
|
|
|
a
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
2009-08-28 12:55:59 +02:00
|
|
|
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 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,p0001-01-01,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 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-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 pNULL,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 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 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,p0001-01-01,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,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 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 ref a a 4 const 1 Using where; Using index
|
2009-09-01 14:53:27 +02:00
|
|
|
# Disabling warnings for the invalid date
|
2009-08-28 12:55:59 +02:00
|
|
|
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 range a a 4 NULL 5 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 range a a 4 NULL 5 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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p2001-01-01 index a a 4 NULL 4 Using where; Using index
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p2001-01-01 index a a 4 NULL 4 Using where; Using index
|
2009-08-28 12:55:59 +02:00
|
|
|
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 where; 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 range a a 4 NULL 5 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 range a a 4 NULL 3 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 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 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 3 Using where; Using index
|
2009-08-26 12:59:49 +02:00
|
|
|
# test without index
|
|
|
|
ALTER TABLE t1 DROP KEY a;
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-01-01';
|
|
|
|
a
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
2009-09-01 14:53:27 +02:00
|
|
|
# Disabling warnings for the invalid date
|
2009-08-26 12:59:49 +02:00
|
|
|
SELECT * FROM t1 WHERE a < '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1999-02-31';
|
|
|
|
a
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p2001-01-01 ALL NULL NULL NULL NULL 4 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
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 NULL 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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL ALL NULL NULL NULL NULL 3 Using where
|
2009-09-01 14:53:27 +02:00
|
|
|
# Disabling warnings for the invalid date
|
2009-08-28 12:55:59 +02:00
|
|
|
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 ALL NULL NULL NULL NULL 7 Using where
|
|
|
|
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 ALL NULL NULL NULL NULL 7 Using where
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p2001-01-01 ALL NULL NULL NULL NULL 4 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p2001-01-01 ALL NULL NULL NULL NULL 4 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL ALL NULL NULL NULL NULL 3 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
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 ALL NULL NULL NULL NULL 7 Using where
|
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:59:49 +02:00
|
|
|
DROP TABLE t1;
|
|
|
|
# test of LIST and index
|
|
|
|
CREATE TABLE t1 (a DATE, KEY(a))
|
|
|
|
PARTITION BY LIST (TO_DAYS(a))
|
|
|
|
(PARTITION `p0001-01-01` VALUES IN (TO_DAYS('0001-01-01')),
|
|
|
|
PARTITION `p2001-01-01` VALUES IN (TO_DAYS('2001-01-01')),
|
|
|
|
PARTITION `pNULL` VALUES IN (NULL),
|
|
|
|
PARTITION `p0000-01-02` VALUES IN (TO_DAYS('0000-01-02')),
|
|
|
|
PARTITION `p1001-01-01` VALUES IN (TO_DAYS('1001-01-01')));
|
|
|
|
INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'),
|
|
|
|
('1001-00-00'), ('1001-01-01'), ('1002-00-00'), ('2001-01-01');
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-01-01';
|
2009-10-19 13:40:08 +02:00
|
|
|
a
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
# Disabling warnings for the invalid date
|
|
|
|
SELECT * FROM t1 WHERE a < '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1999-02-31';
|
|
|
|
a
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
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 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 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 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 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-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL 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 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 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 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 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 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 ref a a 4 const 1 Using where; 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 range a a 4 NULL 5 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 range a a 4 NULL 5 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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
2009-10-19 13:40:08 +02:00
|
|
|
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 where; 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 range a a 4 NULL 5 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 range a a 4 NULL 4 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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p1001-01-01 index a a 4 NULL 4 Using where; Using index
|
2009-10-19 13:40:08 +02:00
|
|
|
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 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';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-01-01';
|
|
|
|
a
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
# Disabling warnings for the invalid date
|
|
|
|
SELECT * FROM t1 WHERE a < '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1999-02-31';
|
|
|
|
a
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 ALL NULL NULL NULL NULL 5 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL ALL NULL NULL NULL NULL 4 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
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 NULL 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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 ALL NULL NULL NULL NULL 5 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 ALL NULL NULL NULL NULL 5 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL ALL NULL NULL NULL NULL 3 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
# 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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL ALL NULL NULL NULL NULL 4 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL ALL NULL NULL NULL NULL 4 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL ALL NULL NULL NULL NULL 3 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 pNULL,p1001-01-01 ALL NULL NULL NULL NULL 4 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
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
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-10-19 13:40:08 +02:00
|
|
|
DROP TABLE t1;
|
|
|
|
# TO_SECONDS, test of LIST and index
|
|
|
|
CREATE TABLE t1 (a DATE, KEY(a))
|
|
|
|
PARTITION BY LIST (TO_SECONDS(a))
|
|
|
|
(PARTITION `p0001-01-01` VALUES IN (TO_SECONDS('0001-01-01')),
|
|
|
|
PARTITION `p2001-01-01` VALUES IN (TO_SECONDS('2001-01-01')),
|
|
|
|
PARTITION `pNULL` VALUES IN (NULL),
|
|
|
|
PARTITION `p0000-01-02` VALUES IN (TO_SECONDS('0000-01-02')),
|
|
|
|
PARTITION `p1001-01-01` VALUES IN (TO_SECONDS('1001-01-01')));
|
|
|
|
INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'),
|
|
|
|
('1001-00-00'), ('1001-01-01'), ('1002-00-00'), ('2001-01-01');
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
2009-08-26 12:59:49 +02:00
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-01-01';
|
|
|
|
a
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
2009-09-01 14:53:27 +02:00
|
|
|
# Disabling warnings for the invalid date
|
2009-08-26 12:59:49 +02:00
|
|
|
SELECT * FROM t1 WHERE a < '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1999-02-31';
|
|
|
|
a
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
2009-08-28 12:55:59 +02:00
|
|
|
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 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 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 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 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-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL 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 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 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 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 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 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 ref a a 4 const 1 Using where; Using index
|
2009-09-01 14:53:27 +02:00
|
|
|
# Disabling warnings for the invalid date
|
2009-08-28 12:55:59 +02:00
|
|
|
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 range a a 4 NULL 5 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 range a a 4 NULL 5 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
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
|
2009-08-28 12:55:59 +02:00
|
|
|
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 where; 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 range a a 4 NULL 5 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 range a a 4 NULL 4 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
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 pNULL,p1001-01-01 index a a 4 NULL 4 Using where; Using index
|
2009-08-28 12:55:59 +02:00
|
|
|
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 range a a 4 NULL 3 Using where; Using index
|
2009-08-26 12:59:49 +02:00
|
|
|
# test without index
|
|
|
|
ALTER TABLE t1 DROP KEY a;
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-01-01';
|
|
|
|
a
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-01-01';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a < '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a <= '1001-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1001-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
2009-09-01 14:53:27 +02:00
|
|
|
# Disabling warnings for the invalid date
|
2009-08-26 12:59:49 +02:00
|
|
|
SELECT * FROM t1 WHERE a < '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a <= '1999-02-31';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a >= '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
a
|
|
|
|
2001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a = '1999-02-31';
|
|
|
|
a
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0000-00-00
|
|
|
|
0000-01-02
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
|
|
|
a
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
|
|
|
1002-00-00
|
|
|
|
SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
|
|
|
a
|
|
|
|
0001-01-01
|
|
|
|
1001-00-00
|
|
|
|
1001-01-01
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL ALL NULL NULL NULL NULL 4 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
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 NULL 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
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 pNULL ALL NULL NULL NULL NULL 3 Using where
|
2009-09-01 14:53:27 +02:00
|
|
|
# Disabling warnings for the invalid date
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL ALL NULL NULL NULL NULL 4 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p2001-01-01,pNULL ALL NULL NULL NULL NULL 4 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 pNULL ALL NULL NULL NULL NULL 3 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
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
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
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
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
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
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 pNULL,p1001-01-01 ALL NULL NULL NULL NULL 4 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
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
|
2010-09-13 15:56:56 +02:00
|
|
|
1 SIMPLE t1 p0001-01-01,pNULL,p1001-01-01 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-28 12:55:59 +02:00
|
|
|
DROP TABLE t1;
|
2009-08-26 12:51:23 +02:00
|
|
|
# Test with DATETIME column NOT NULL
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
a int(10) unsigned NOT NULL,
|
|
|
|
b DATETIME NOT NULL,
|
|
|
|
PRIMARY KEY (a, b)
|
|
|
|
) PARTITION BY RANGE (TO_DAYS(b))
|
|
|
|
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
|
|
|
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
|
|
|
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
|
|
|
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
|
|
|
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
|
|
|
INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'),
|
|
|
|
(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-02 23:59:59'),
|
|
|
|
(1, '2009-04-03'), (2, '2009-04-03'), (1, '2009-04-04'), (2, '2009-04-04'),
|
|
|
|
(1, '2009-04-05'), (1, '2009-04-06'), (1, '2009-04-07');
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 12 NULL 8 Using where; Using index
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 index NULL PRIMARY 12 NULL 2 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090402 index NULL PRIMARY 12 NULL 3 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2009-08-28 12:55:59 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 13 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 12 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 index NULL PRIMARY 12 NULL 2 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 12 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 index NULL PRIMARY 12 NULL 2 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090402 index NULL PRIMARY 12 NULL 3 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2009-08-28 12:55:59 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 13 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 12 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 index NULL PRIMARY 12 NULL 2 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 12 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 12 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 index NULL PRIMARY 12 NULL 2 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 12 NULL 6 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090402 index NULL PRIMARY 12 NULL 3 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2009-08-28 12:55:59 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 13 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2009-08-28 12:55:59 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403,p20090404,p20090405 index NULL PRIMARY 12 NULL 13 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
DROP TABLE t1;
|
|
|
|
# Test with DATE column NOT NULL
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
a int(10) unsigned NOT NULL,
|
|
|
|
b DATE NOT NULL,
|
|
|
|
PRIMARY KEY (a, b)
|
|
|
|
) PARTITION BY RANGE (TO_DAYS(b))
|
|
|
|
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
|
|
|
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
|
|
|
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
|
|
|
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
|
|
|
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
|
|
|
INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'),
|
|
|
|
(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-03'), (2, '2009-04-03'),
|
|
|
|
(1, '2009-04-04'), (2, '2009-04-04'), (1, '2009-04-05'), (1, '2009-04-06'),
|
|
|
|
(1, '2009-04-07');
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 7 NULL 7 Using where; Using index
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 index NULL PRIMARY 7 NULL 2 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 index NULL PRIMARY 7 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 7 NULL 7 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 index NULL PRIMARY 7 NULL 2 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 index NULL PRIMARY 7 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 7 NULL 7 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 index NULL PRIMARY 7 NULL 2 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 index NULL PRIMARY 7 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 7 NULL 7 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 index NULL PRIMARY 7 NULL 2 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 index NULL PRIMARY 7 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 7 NULL 7 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 index NULL PRIMARY 7 NULL 7 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 index NULL PRIMARY 7 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 index NULL PRIMARY 7 NULL 8 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 index NULL PRIMARY 7 NULL 5 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 index NULL PRIMARY 7 NULL 10 Using where; Using index
|
2009-08-26 12:51:23 +02:00
|
|
|
DROP TABLE t1;
|
|
|
|
# Test with DATETIME column NULL
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
a int(10) unsigned NOT NULL,
|
|
|
|
b DATETIME NULL
|
|
|
|
) PARTITION BY RANGE (TO_DAYS(b))
|
|
|
|
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
|
|
|
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
|
|
|
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
|
|
|
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
|
|
|
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
|
|
|
INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'),
|
|
|
|
(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-02 23:59:59'),
|
|
|
|
(1, '2009-04-03'), (2, '2009-04-03'), (1, '2009-04-04'), (2, '2009-04-04'),
|
|
|
|
(1, '2009-04-05'), (1, '2009-04-06'), (1, '2009-04-07');
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 8 Using where
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 ALL NULL NULL NULL NULL 2 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090402 ALL NULL NULL NULL NULL 3 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2009-08-28 12:55:59 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 13 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 ALL NULL NULL NULL NULL 2 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 ALL NULL NULL NULL NULL 2 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090402 ALL NULL NULL NULL NULL 3 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2009-08-28 12:55:59 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 13 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 ALL NULL NULL NULL NULL 2 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 ALL NULL NULL NULL NULL 2 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 6 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090402 ALL NULL NULL NULL NULL 3 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2009-08-28 12:55:59 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 13 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2009-08-28 12:55:59 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 13 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
DROP TABLE t1;
|
|
|
|
# Test with DATE column NULL
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
a int(10) unsigned NOT NULL,
|
|
|
|
b DATE NULL
|
|
|
|
) PARTITION BY RANGE (TO_DAYS(b))
|
|
|
|
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
|
|
|
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
|
|
|
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
|
|
|
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
|
|
|
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
|
|
|
INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'),
|
|
|
|
(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-03'), (2, '2009-04-03'),
|
|
|
|
(1, '2009-04-04'), (2, '2009-04-04'), (1, '2009-04-05'), (1, '2009-04-06'),
|
|
|
|
(1, '2009-04-07');
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 7 Using where
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 ALL NULL NULL NULL NULL 2 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 7 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 ALL NULL NULL NULL NULL 2 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 7 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 ALL NULL NULL NULL NULL 2 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 7 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090403 ALL NULL NULL NULL NULL 2 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 7 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402,p20090403 ALL NULL NULL NULL NULL 7 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090404,p20090405 ALL NULL NULL NULL NULL 8 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090402 ALL NULL NULL NULL NULL 5 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1
|
|
|
|
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p20090401,p20090403,p20090404,p20090405 ALL NULL NULL NULL NULL 10 Using where
|
2009-08-26 12:51:23 +02:00
|
|
|
DROP TABLE t1;
|
|
|
|
# For better code coverage of the patch
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
a int(10) unsigned NOT NULL,
|
|
|
|
b DATE
|
|
|
|
) PARTITION BY RANGE ( TO_DAYS(b) )
|
|
|
|
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
|
|
|
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
|
|
|
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
|
|
|
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
|
|
|
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
|
|
|
INSERT INTO t1 VALUES (1, '2009-01-01'), (2, NULL);
|
|
|
|
# test with an invalid date, which lead to item->null_value is set.
|
|
|
|
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-99' AS DATETIME);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2009-10-16 22:19:51 +02:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2009-08-26 12:51:23 +02:00
|
|
|
Warnings:
|
|
|
|
Warning 1292 Incorrect datetime value: '2009-04-99'
|
2009-08-26 12:59:49 +02:00
|
|
|
DROP TABLE t1;
|
2008-12-28 12:33:49 +01:00
|
|
|
CREATE TABLE t1
|
|
|
|
(a INT NOT NULL AUTO_INCREMENT,
|
|
|
|
b DATETIME,
|
|
|
|
PRIMARY KEY (a,b),
|
|
|
|
KEY (b))
|
|
|
|
PARTITION BY RANGE (to_days(b))
|
|
|
|
(PARTITION p0 VALUES LESS THAN (733681) COMMENT = 'LESS THAN 2008-10-01',
|
|
|
|
PARTITION p1 VALUES LESS THAN (733712) COMMENT = 'LESS THAN 2008-11-01',
|
|
|
|
PARTITION pX VALUES LESS THAN MAXVALUE);
|
|
|
|
SELECT a,b FROM t1 WHERE b >= '2008-12-01' AND b < '2009-12-00';
|
|
|
|
a b
|
|
|
|
DROP TABLE t1;
|
2005-12-22 10:29:00 +01:00
|
|
|
create table t1 ( a int not null) partition by hash(a) partitions 2;
|
|
|
|
insert into t1 values (1),(2),(3);
|
|
|
|
explain select * from t1 where a=5 and a=6;
|
|
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
|
|
|
drop table t1;
|
|
|
|
create table t1 (
|
|
|
|
a int(11) not null
|
|
|
|
) partition by hash (a) partitions 2;
|
|
|
|
insert into t1 values (1),(2),(3);
|
|
|
|
explain partitions select * from t1 where a=1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 2 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t1 where a=2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t1 p0 system NULL NULL NULL NULL 1
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t1 where a=1 or a=2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
create table t2 (
|
|
|
|
a int not null,
|
|
|
|
b int not null
|
|
|
|
) partition by key(a,b) partitions 2;
|
|
|
|
insert into t2 values (1,1),(2,2),(3,3);
|
|
|
|
explain partitions select * from t2 where a=1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t2 where b=1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t2 where a=1 and b=1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
create table t3 (
|
|
|
|
a int
|
|
|
|
)
|
|
|
|
partition by range (a*1) (
|
|
|
|
partition p0 values less than (10),
|
|
|
|
partition p1 values less than (20)
|
|
|
|
);
|
|
|
|
insert into t3 values (5),(15);
|
|
|
|
explain partitions select * from t3 where a=11;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t3 where a=10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t3 where a=20;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t3 where a=30;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
create table t4 (a int not null, b int not null) partition by LIST (a+b) (
|
|
|
|
partition p0 values in (12),
|
|
|
|
partition p1 values in (14)
|
|
|
|
);
|
|
|
|
insert into t4 values (10,2), (10,4);
|
|
|
|
explain partitions select * from t4 where (a=10 and b=1) or (a=10 and b=2);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t4 p0 system NULL NULL NULL NULL 1
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t4
|
|
|
|
where (a=10 and b=1) or (a=10 and b=2) or (a=10 and b = 3);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t4 p0 system NULL NULL NULL NULL 1
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t4 where (a=10 and b=2) or (a=10 and b=3)
|
|
|
|
or (a=10 and b = 4);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t4 p0,p1 ALL NULL NULL NULL NULL 2 Using where
|
|
|
|
explain partitions select * from t4 where (a=10 and b=1) or a=11;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t4 p0,p1 ALL NULL NULL NULL NULL 2 Using where
|
|
|
|
explain partitions select * from t4 where (a=10 and b=2) or a=11;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t4 p0,p1 ALL NULL NULL NULL NULL 2 Using where
|
|
|
|
drop table t1, t2, t3, t4;
|
|
|
|
create table t5 (a int not null, b int not null,
|
|
|
|
c int not null, d int not null)
|
|
|
|
partition by LIST(a+b) subpartition by HASH (c+d) subpartitions 2
|
|
|
|
(
|
|
|
|
partition p0 values in (12),
|
|
|
|
partition p1 values in (14)
|
|
|
|
);
|
|
|
|
insert into t5 values (10,2,0,0), (10,4,0,0), (10,2,0,1), (10,4,0,1);
|
|
|
|
explain partitions select * from t5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-02-25 00:51:01 +01:00
|
|
|
1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 4
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t5
|
|
|
|
where (a=10 and b=1) or (a=10 and b=2) or (a=10 and b = 3);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t5 p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 2 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t5 where (a=10 and b=2) or (a=10 and b=3)
|
|
|
|
or (a=10 and b = 4);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-02-25 00:51:01 +01:00
|
|
|
1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 4 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t5 where (c=1 and d=1);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t5 p0_p0sp0,p1_p1sp0 ALL NULL NULL NULL NULL 2 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t5 where (c=2 and d=1);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t5 p0_p0sp1,p1_p1sp1 ALL NULL NULL NULL NULL 2 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t5 where (a=10 and b=2 and c=1 and d=1) or
|
|
|
|
(c=2 and d=1);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp1 ALL NULL NULL NULL NULL 3 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t5 where (a=10 and b=2 and c=1 and d=1) or
|
|
|
|
(b=2 and c=2 and d=1);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp1 ALL NULL NULL NULL NULL 3 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
create table t6 (a int not null) partition by LIST(a) (
|
|
|
|
partition p1 values in (1),
|
|
|
|
partition p3 values in (3),
|
|
|
|
partition p5 values in (5),
|
|
|
|
partition p7 values in (7),
|
|
|
|
partition p9 values in (9)
|
|
|
|
);
|
|
|
|
insert into t6 values (1),(3),(5);
|
|
|
|
explain partitions select * from t6 where a < 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t6 where a <= 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t6 p1 system NULL NULL NULL NULL 1
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t6 where a > 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t6 where a >= 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t6 where a > 0 and a < 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t6 p1,p3 ALL NULL NULL NULL NULL 2 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t6 where a > 5 and a < 12;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t6 where a > 3 and a < 8 ;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t6 p5,p7 system NULL NULL NULL NULL 1
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t6 where a >= 0 and a <= 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t6 p1,p3,p5 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t6 where a >= 5 and a <= 12;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t6 p5,p7,p9 system NULL NULL NULL NULL 1
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t6 where a >= 3 and a <= 8;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t6 p3,p5,p7 ALL NULL NULL NULL NULL 2 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t6 where a > 3 and a < 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2006-07-20 11:28:16 +02:00
|
|
|
drop table t6;
|
|
|
|
create table t6 (a int unsigned not null) partition by LIST(a) (
|
|
|
|
partition p1 values in (1),
|
|
|
|
partition p3 values in (3),
|
|
|
|
partition p5 values in (5),
|
|
|
|
partition p7 values in (7),
|
|
|
|
partition p9 values in (9)
|
|
|
|
);
|
|
|
|
insert into t6 values (1),(3),(5);
|
|
|
|
explain partitions select * from t6 where a < 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t6 where a <= 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t6 p1 system NULL NULL NULL NULL 1
|
|
|
|
explain partitions select * from t6 where a > 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t6 where a >= 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t6 where a > 0 and a < 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t6 p1,p3 ALL NULL NULL NULL NULL 2 Using where
|
|
|
|
explain partitions select * from t6 where a > 5 and a < 12;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t6 where a > 3 and a < 8 ;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t6 p5,p7 system NULL NULL NULL NULL 1
|
|
|
|
explain partitions select * from t6 where a >= 0 and a <= 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t6 p1,p3,p5 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t6 where a >= 5 and a <= 12;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t6 p5,p7,p9 system NULL NULL NULL NULL 1
|
|
|
|
explain partitions select * from t6 where a >= 3 and a <= 8;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t6 p3,p5,p7 ALL NULL NULL NULL NULL 2 Using where
|
2006-07-20 11:28:16 +02:00
|
|
|
explain partitions select * from t6 where a > 3 and a < 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
create table t7 (a int not null) partition by RANGE(a) (
|
|
|
|
partition p10 values less than (10),
|
|
|
|
partition p30 values less than (30),
|
|
|
|
partition p50 values less than (50),
|
|
|
|
partition p70 values less than (70),
|
|
|
|
partition p90 values less than (90)
|
|
|
|
);
|
|
|
|
insert into t7 values (10),(30),(50);
|
|
|
|
explain partitions select * from t7 where a < 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2010-03-10 12:56:05 +01:00
|
|
|
explain partitions select * from t7 where a < 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a <= 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a = 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a >= 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a > 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t7 where a < 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2006-07-20 11:28:16 +02:00
|
|
|
explain partitions select * from t7 where a <= 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30 system NULL NULL NULL NULL 1
|
|
|
|
explain partitions select * from t7 where a = 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p30 system NULL NULL NULL NULL 1
|
2010-03-10 12:56:05 +01:00
|
|
|
explain partitions select * from t7 where a >= 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a > 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a < 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a <= 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a = 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a > 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a >= 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2006-07-20 11:28:16 +02:00
|
|
|
explain partitions select * from t7 where a < 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
2010-03-10 12:56:05 +01:00
|
|
|
explain partitions select * from t7 where a <= 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
2006-07-20 11:28:16 +02:00
|
|
|
explain partitions select * from t7 where a = 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a > 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a >= 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2010-03-10 12:56:05 +01:00
|
|
|
explain partitions select * from t7 where a > 91;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2006-07-20 11:28:16 +02:00
|
|
|
explain partitions select * from t7 where a > 11 and a < 29;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
drop table t7;
|
|
|
|
create table t7 (a int unsigned not null) partition by RANGE(a) (
|
|
|
|
partition p10 values less than (10),
|
|
|
|
partition p30 values less than (30),
|
|
|
|
partition p50 values less than (50),
|
|
|
|
partition p70 values less than (70),
|
|
|
|
partition p90 values less than (90)
|
|
|
|
);
|
|
|
|
insert into t7 values (10),(30),(50);
|
|
|
|
explain partitions select * from t7 where a < 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2010-03-10 12:56:05 +01:00
|
|
|
explain partitions select * from t7 where a < 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a <= 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a = 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a >= 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a > 9;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
2006-07-20 11:28:16 +02:00
|
|
|
explain partitions select * from t7 where a < 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t7 where a <= 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t7 p10,p30 system NULL NULL NULL NULL 1
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t7 where a = 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t7 p30 system NULL NULL NULL NULL 1
|
2010-03-10 12:56:05 +01:00
|
|
|
explain partitions select * from t7 where a >= 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a > 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a < 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a <= 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
explain partitions select * from t7 where a = 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a > 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a >= 89;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t7 where a < 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
2010-03-10 12:56:05 +01:00
|
|
|
explain partitions select * from t7 where a <= 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t7 p10,p30,p50,p70,p90 ALL NULL NULL NULL NULL 3 Using where
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t7 where a = 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a > 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t7 where a >= 90;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2010-03-10 12:56:05 +01:00
|
|
|
explain partitions select * from t7 where a > 91;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t7 where a > 11 and a < 29;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
create table t8 (a date not null) partition by RANGE(YEAR(a)) (
|
|
|
|
partition p0 values less than (1980),
|
|
|
|
partition p1 values less than (1990),
|
|
|
|
partition p2 values less than (2000)
|
|
|
|
);
|
|
|
|
insert into t8 values ('1985-05-05'),('1995-05-05');
|
|
|
|
explain partitions select * from t8 where a < '1980-02-02';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
create table t9 (a date not null) partition by RANGE(TO_DAYS(a)) (
|
|
|
|
partition p0 values less than (732299), -- 2004-12-19
|
|
|
|
partition p1 values less than (732468), -- 2005-06-06
|
|
|
|
partition p2 values less than (732664) -- 2005-12-19
|
|
|
|
);
|
|
|
|
insert into t9 values ('2005-05-05'), ('2005-04-04');
|
|
|
|
explain partitions select * from t9 where a < '2004-12-19';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-22 10:29:00 +01:00
|
|
|
explain partitions select * from t9 where a <= '2004-12-19';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t9 p0,p1 ALL NULL NULL NULL NULL 2 Using where
|
|
|
|
drop table t5,t6,t7,t8,t9;
|
2005-12-26 06:40:09 +01:00
|
|
|
create table t1 (
|
|
|
|
a1 int not null
|
|
|
|
)
|
|
|
|
partition by range (a1) (
|
|
|
|
partition p0 values less than (3),
|
|
|
|
partition p1 values less than (6),
|
|
|
|
partition p2 values less than (9)
|
|
|
|
);
|
|
|
|
insert into t1 values (1),(2),(3);
|
|
|
|
explain partitions select * from t1 where a1 > 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-26 06:40:09 +01:00
|
|
|
explain partitions select * from t1 where a1 >= 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t1 p1,p2 system NULL NULL NULL NULL 1
|
2005-12-26 06:40:09 +01:00
|
|
|
explain partitions select * from t1 where a1 < 3 and a1 > 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
drop table t1;
|
|
|
|
create table t3 (a int, b int)
|
|
|
|
partition by list(a) subpartition by hash(b) subpartitions 4 (
|
|
|
|
partition p0 values in (1),
|
|
|
|
partition p1 values in (2),
|
|
|
|
partition p2 values in (3),
|
|
|
|
partition p3 values in (4)
|
|
|
|
);
|
|
|
|
insert into t3 values (1,1),(2,2),(3,3);
|
|
|
|
explain partitions select * from t3 where a=2 or b=1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-02-25 00:51:01 +01:00
|
|
|
1 SIMPLE t3 p0_p0sp1,p1_p1sp0,p1_p1sp1,p1_p1sp2,p1_p1sp3,p2_p2sp1,p3_p3sp1 ALL NULL NULL NULL NULL 2 Using where
|
2005-12-26 06:40:09 +01:00
|
|
|
explain partitions select * from t3 where a=4 or b=2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-02-25 00:51:01 +01:00
|
|
|
1 SIMPLE t3 p0_p0sp2,p1_p1sp2,p2_p2sp2,p3_p3sp0,p3_p3sp1,p3_p3sp2,p3_p3sp3 system NULL NULL NULL NULL 1
|
2005-12-26 06:40:09 +01:00
|
|
|
explain partitions select * from t3 where (a=2 or b=1) and (a=4 or b=2) ;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-02-25 00:51:01 +01:00
|
|
|
1 SIMPLE t3 p1_p1sp2,p3_p3sp1 system NULL NULL NULL NULL 1
|
2005-12-26 08:16:36 +01:00
|
|
|
drop table t3;
|
2005-12-26 06:40:09 +01:00
|
|
|
create table t1 (a int) partition by hash(a) partitions 2;
|
|
|
|
insert into t1 values (1),(2);
|
|
|
|
explain partitions select * from t1 where a is null;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2005-12-26 06:40:09 +01:00
|
|
|
explain partitions select * from t1 where a is not null;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 2 Using where
|
|
|
|
drop table t1;
|
2005-12-29 07:32:46 +01:00
|
|
|
create table t1 (a int not null, b int not null, key(a), key(b))
|
|
|
|
partition by hash(a) partitions 4;
|
|
|
|
insert into t1 values (1,1),(2,2),(3,3),(4,4);
|
|
|
|
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
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE X p1,p2 ALL a,b NULL NULL NULL 2 Using where
|
2005-12-29 07:32:46 +01:00
|
|
|
1 SIMPLE Y p2,p3 ref a,b b 4 test.X.b 2 Using where
|
|
|
|
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
|
Initial import of WL#3726 "DDL locking for all metadata objects".
Backport of:
------------------------------------------------------------
revno: 2630.4.1
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Fri 2008-05-23 17:54:03 +0400
message:
WL#3726 "DDL locking for all metadata objects".
After review fixes in progress.
------------------------------------------------------------
This is the first patch in series. It transforms the metadata
locking subsystem to use a dedicated module (mdl.h,cc). No
significant changes in the locking protocol.
The import passes the test suite with the exception of
deprecated/removed 6.0 features, and MERGE tables. The latter
are subject to a fix by WL#4144.
Unfortunately, the original changeset comments got lost in a merge,
thus this import has its own (largely insufficient) comments.
This patch fixes Bug#25144 "replication / binlog with view breaks".
Warning: this patch introduces an incompatible change:
Under LOCK TABLES, it's no longer possible to FLUSH a table that
was not locked for WRITE.
Under LOCK TABLES, it's no longer possible to DROP a table or
VIEW that was not locked for WRITE.
******
Backport of:
------------------------------------------------------------
revno: 2630.4.2
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sat 2008-05-24 14:03:45 +0400
message:
WL#3726 "DDL locking for all metadata objects".
After review fixes in progress.
******
Backport of:
------------------------------------------------------------
revno: 2630.4.3
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sat 2008-05-24 14:08:51 +0400
message:
WL#3726 "DDL locking for all metadata objects"
Fixed failing Windows builds by adding mdl.cc to the lists
of files needed to build server/libmysqld on Windows.
******
Backport of:
------------------------------------------------------------
revno: 2630.4.4
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sat 2008-05-24 21:57:58 +0400
message:
WL#3726 "DDL locking for all metadata objects".
Fix for assert failures in kill.test which occured when one
tried to kill ALTER TABLE statement on merge table while it
was waiting in wait_while_table_is_used() for other connections
to close this table.
These assert failures stemmed from the fact that cleanup code
in this case assumed that temporary table representing new
version of table was open with adding to THD::temporary_tables
list while code which were opening this temporary table wasn't
always fulfilling this.
This patch changes code that opens new version of table to
always do this linking in. It also streamlines cleanup process
for cases when error occurs while we have new version of table
open.
******
WL#3726 "DDL locking for all metadata objects"
Add libmysqld/mdl.cc to .bzrignore.
******
Backport of:
------------------------------------------------------------
revno: 2630.4.6
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w
timestamp: Sun 2008-05-25 00:33:22 +0400
message:
WL#3726 "DDL locking for all metadata objects".
Addition to the fix of assert failures in kill.test caused by
changes for this worklog.
Make sure we close the new table only once.
.bzrignore:
Add libmysqld/mdl.cc
libmysqld/CMakeLists.txt:
Added mdl.cc to the list of files needed for building of libmysqld.
libmysqld/Makefile.am:
Added files implementing new meta-data locking subsystem to the server.
mysql-test/include/handler.inc:
Use separate connection for waiting while threads performing DDL
operations conflicting with open HANDLER tables reach blocked
state. This is required because now we check and close tables open
by HANDLER statements in this connection conflicting with DDL in
another each time open_tables() is called and thus select from I_S
which is used for waiting will unblock DDL operations if issued
from connection with open HANDLERs.
mysql-test/r/create.result:
Adjusted test case after change in implementation of CREATE TABLE
... SELECT. We no longer have special check in open_table() which
catches the case when we select from the table created. Instead we
rely on unique_table() call which happens after opening and
locking all tables.
mysql-test/r/flush.result:
FLUSH TABLES WITH READ LOCK can no longer happen under LOCK
TABLES. Updated test accordingly.
mysql-test/r/flush_table.result:
Under LOCK TABLES we no longer allow to do FLUSH TABLES for tables
locked for read. Updated test accordingly.
mysql-test/r/handler_innodb.result:
Use separate connection for waiting while threads performing DDL
operations conflicting with open HANDLER tables reach blocked
state. This is required because now we check and close tables open
by HANDLER statements in this connection conflicting with DDL in
another each time open_tables() is called and thus select from I_S
which is used for waiting will unblock DDL operations if issued
from connection with open HANDLERs.
mysql-test/r/handler_myisam.result:
Use separate connection for waiting while threads performing DDL
operations conflicting with open HANDLER tables reach blocked
state. This is required because now we check and close tables open
by HANDLER statements in this connection conflicting with DDL in
another each time open_tables() is called and thus select from I_S
which is used for waiting will unblock DDL operations if issued
from connection with open HANDLERs.
mysql-test/r/information_schema.result:
Additional test for WL#3726 "DDL locking for all metadata
objects". Check that we use high-priority metadata lock requests
when filling I_S tables.
Rearrange tests to match 6.0 better (fewer merge conflicts).
mysql-test/r/kill.result:
Added tests checking that DDL and DML statements waiting for
metadata locks can be interrupted by KILL command.
mysql-test/r/lock.result:
One no longer is allowed to do DROP VIEW under LOCK TABLES even if
this view is locked by LOCK TABLES. The problem is that in such
situation write locks on view are not mutually exclusive so
upgrading metadata lock which is required for dropping of view
will lead to deadlock.
mysql-test/r/partition_column_prune.result:
Update results (same results in 6.0), WL#3726
mysql-test/r/partition_pruning.result:
Update results (same results in 6.0), WL#3726
mysql-test/r/ps_ddl.result:
We no longer invalidate prepared CREATE TABLE ... SELECT statement
if target table changes. This is OK since it is not strictly
necessary.
The first change is wrong, is caused by FLUSH TABLE
now flushing all unused tables. This is a regression that
Dmitri fixed in 6.0 in a follow up patch.
mysql-test/r/sp.result:
Under LOCK TABLES we no longer allow accessing views which were
not explicitly locked. To access view we need to obtain metadata
lock on it and doing this under LOCK TABLES may lead to deadlocks.
mysql-test/r/view.result:
One no longer is allowed to do DROP VIEW under LOCK TABLES even if
this view is locked by LOCK TABLES. The problem is that in such
situation even "write locks" on view are not mutually exclusive so
upgrading metadata lock which is required for dropping of view
will lead to deadlock
mysql-test/r/view_grant.result:
ALTER VIEW implementation was changed to open a view only after
checking that user which does alter has appropriate privileges on
it. This means that in case when user's privileges are
insufficient for this we won't check that new view definer is the
same as original one or user performing alter has SUPER privilege.
Adjusted test case accordingly.
mysql-test/r/view_multi.result:
Added test case for bug#25144 "replication / binlog with view
breaks".
mysql-test/suite/rpl/t/disabled.def:
Disable test for deprecated features (they don't work with new MDL).
mysql-test/t/create.test:
Adjusted test case after change in implementation of CREATE TABLE
... SELECT. We no longer have special check in open_table() which
catches the case when we select from the table created. Instead we
rely on unique_table() call which happens after opening and
locking all tables.
mysql-test/t/disabled.def:
Disable merge.test, subject of WL#4144
mysql-test/t/flush.test:
FLUSH TABLES WITH READ LOCK can no longer happen under LOCK
TABLES. Updated test accordingly.
mysql-test/t/flush_table.test:
Under LOCK TABLES we no longer allow to do FLUSH TABLES for tables
locked for read. Updated test accordingly.
mysql-test/t/information_schema.test:
Additional test for WL#3726 "DDL locking for all metadata
objects". Check that we use high-priority metadata lock requests
when filling I_S tables.
Rearrange the results for easier merges with 6.0.
mysql-test/t/kill.test:
Added tests checking that DDL and DML statements waiting for
metadata locks can be interrupted by KILL command.
mysql-test/t/lock.test:
One no longer is allowed to do DROP VIEW under LOCK TABLES even if
this view is locked by LOCK TABLES. The problem is that in such
situation write locks on view are not mutually exclusive so
upgrading metadata lock which is required for dropping of view
will lead to deadlock.
mysql-test/t/lock_multi.test:
Adjusted test case to the changes of status in various places
caused by change in implementation FLUSH TABLES WITH READ LOCK,
which is now takes global metadata lock before flushing tables and
therefore waits on at these places.
mysql-test/t/ps_ddl.test:
We no longer invalidate prepared CREATE TABLE ... SELECT statement
if target table changes. This is OK since it is not strictly
necessary.
The first change is wrong, is caused by FLUSH TABLE
now flushing all unused tables. This is a regression that
Dmitri fixed in 6.0 in a follow up patch.
mysql-test/t/sp.test:
Under LOCK TABLES we no longer allow accessing views which were
not explicitly locked. To access view we need to obtain metadata
lock on it and doing this under LOCK TABLES may lead to deadlocks.
mysql-test/t/trigger_notembedded.test:
Adjusted test case to the changes of status in various places
caused by change in implementation FLUSH TABLES WITH READ LOCK,
which is now takes global metadata lock before flushing tables and
therefore waits on at these places.
mysql-test/t/view.test:
One no longer is allowed to do DROP VIEW under LOCK TABLES even if
this view is locked by LOCK TABLES. The problem is that in such
situation even "write locks" on view are not mutually exclusive so
upgrading metadata lock which is required for dropping of view
will lead to deadlock.
mysql-test/t/view_grant.test:
ALTER VIEW implementation was changed to open a view only after
checking that user which does alter has appropriate privileges on
it. This means that in case when user's privileges are
insufficient for this we won't check that new view definer is the
same as original one or user performing alter has SUPER privilege.
Adjusted test case accordingly.
mysql-test/t/view_multi.test:
Added test case for bug#25144 "replication / binlog with view
breaks".
sql/CMakeLists.txt:
Added mdl.cc to the list of files needed for building of server.
sql/Makefile.am:
Added files implementing new meta-data locking subsystem to the
server.
sql/event_db_repository.cc:
Allocate metadata lock requests objects (MDL_LOCK) on execution
memory root in cases when TABLE_LIST objects is also allocated
there or on stack.
sql/ha_ndbcluster.cc:
Adjusted code to work nicely with new metadata locking subsystem.
close_cached_tables() no longer has wait_for_placeholder argument.
Instead of relying on this parameter and related behavior FLUSH
TABLES WITH READ LOCK now takes global shared metadata lock.
sql/ha_ndbcluster_binlog.cc:
Adjusted code to work with new metadata locking subsystem.
close_cached_tables() no longer has wait_for_placeholder argument.
Instead of relying on this parameter and related behavior FLUSH
TABLES WITH READ LOCK now takes global shared metadata lock.
sql/handler.cc:
update_frm_version():
Directly update TABLE_SHARE::mysql_version member instead of
going through all TABLE instances for this table (old code was a
legacy from pre-table-definition-cache days).
sql/lock.cc:
Use new metadata locking subsystem. Threw away most of functions
related to name locking as now one is supposed to use metadata
locking API instead. In lock_global_read_lock() and
unlock_global_read_lock() in order to avoid problems with global
read lock sneaking in at the moment when we perform FLUSH TABLES
or ALTER TABLE under LOCK TABLES and when tables being reopened
are protected only by metadata locks we also have to take global
shared meta data lock.
sql/log_event.cc:
Adjusted code to work with new metadata locking subsystem. For
tables open by slave thread for applying RBR events allocate
memory for lock request object in the same chunk of memory as
TABLE_LIST objects for them. In order to ensure that we keep these
objects around until tables are open always close tables before
calling Relay_log_info::clear_tables_to_lock(). Use new auxiliary
Relay_log_info::slave_close_thread_tables() method to enforce
this.
sql/log_event_old.cc:
Adjusted code to work with new metadata locking subsystem. Since
for tables open by slave thread for applying RBR events memory for
lock request object is allocated in the same chunk of memory as
TABLE_LIST objects for them we have to ensure that we keep these
objects around until tables are open. To ensure this we always
close tables before calling
Relay_log_info::clear_tables_to_lock(). To enfore this we use
new auxiliary Relay_log_info::slave_close_thread_tables()
method.
sql/mdl.cc:
Implemented new metadata locking subsystem and API described in
WL3726 "DDL locking for all metadata objects".
sql/mdl.h:
Implemented new metadata locking subsystem and API described in
WL3726 "DDL locking for all metadata objects".
sql/mysql_priv.h:
- close_thread_tables()/close_tables_for_reopen() now has one more
argument which indicates that metadata locks should be released
but not removed from the context in order to be used later in
mdl_wait_for_locks() and tdc_wait_for_old_version().
- close_cached_table() routine is no longer public.
- Thread waiting in wait_while_table_is_used() can be now killed
so this function returns boolean to make caller aware of such
situation.
- We no longer have table cache as separate entity instead used
and unused TABLE instances are linked to TABLE_SHARE objects in
table definition cache.
- Now third argument of open_table() is also used for requesting
table repair or auto-discovery of table's new definition. So its
type was changed from bool to enum.
- Added tdc_open_view() function for opening view by getting its
definition from disk (and table cache in future).
- reopen_name_locked_table() no longer needs "link_in" argument as
now we have exclusive metadata locks instead of dummy TABLE
instances when this function is called.
- find_locked_table() now takes head of list of TABLE instances
instead of always scanning through THD::open_tables list. Also
added find_write_locked_table() auxiliary.
- reopen_tables(), close_cached_tables() no longer have
mark_share_as_old and wait_for_placeholder arguments. Instead of
relying on this parameters and related behavior FLUSH TABLES
WITH READ LOCK now takes global shared metadata lock.
- We no longer need drop_locked_tables() and
abort_locked_tables().
- mysql_ha_rm_tables() now always assume that LOCK_open is not
acquired by caller.
- Added notify_thread_having_shared_lock() callback invoked by
metadata locking subsystem when acquiring an exclusive lock, for
each thread that has a conflicting shared metadata lock.
- Introduced expel_table_from_cache() as replacement for
remove_table_from_cache() (the main difference is that this new
function assumes that caller follows metadata locking protocol
and never waits).
- Threw away most of functions related to name locking. One should
use new metadata locking subsystem and API instead.
sql/mysqld.cc:
Got rid of call initializing/deinitializing table cache since now
it is embedded into table definition cache. Added calls for
initializing/ deinitializing metadata locking subsystem.
sql/rpl_rli.cc:
Introduced auxiliary Relay_log_info::slave_close_thread_tables()
method which is used for enforcing that we always close tables
open for RBR before deallocating TABLE_LIST elements and MDL_LOCK
objects for them.
sql/rpl_rli.h:
Introduced auxiliary Relay_log_info::slave_close_thread_tables()
method which is used for enforcing that we always close tables
open for RBR before deallocating TABLE_LIST elements and MDL_LOCK
objects for them.
sql/set_var.cc:
close_cached_tables() no longer has wait_for_placeholder argument.
Instead of relying on this parameter and related behavior FLUSH
TABLES WITH READ LOCK now takes global shared metadata lock.
sql/sp_head.cc:
For tables added to the statement's table list by prelocking
algorithm we allocate these objects either on the same memory as
corresponding table list elements or on THD::locked_tables_root
(if we are building table list for LOCK TABLES).
sql/sql_acl.cc:
Allocate metadata lock requests objects (MDL_LOCK) on execution
memory root in cases when we use stack TABLE_LIST objects to open
tables. Got rid of redundant code by using unlock_locked_tables()
function.
sql/sql_base.cc:
Changed code to use new MDL subsystem. Got rid of separate table
cache. Now used and unused TABLE instances are linked to the
TABLE_SHAREs in table definition cache.
check_unused():
Adjusted code to the fact that we no longer have separate table
cache. Removed dead code.
table_def_free():
Free TABLE instances referenced from TABLE_SHARE objects before
destroying table definition cache.
get_table_share():
Added assert which ensures that noone will be able to access
table (and its share) without acquiring some kind of metadata
lock first.
close_handle_and_leave_table_as_lock():
Adjusted code to the fact that TABLE instances now are linked to
list in TABLE_SHARE.
list_open_tables():
Changed this function to use table definition cache instead of
table cache.
free_cache_entry():
Unlink freed TABLE elements from the list of all TABLE instances
for the table in TABLE_SHARE.
kill_delayed_thread_for_table():
Added auxiliary for killing delayed insert threads for
particular table.
close_cached_tables():
Got rid of wait_for_refresh argument as we now rely on global
shared metadata lock to prevent FLUSH WITH READ LOCK sneaking in
when we are reopening tables. Heavily reworked this function to
use new MDL code and not to rely on separate table cache entity.
close_open_tables():
We no longer have separate table cache.
close_thread_tables():
Release metadata locks after closing all tables. Added skip_mdl
argument which allows us not to remove metadata lock requests
from the context in case when we are going to use this requests
later in mdl_wait_for_locks() and tdc_wait_for_old_versions().
close_thread_table()/close_table_for_reopen():
Since we no longer have separate table cache and all TABLE
instances are linked to TABLE_SHARE objects in table definition
cache we have to link/unlink TABLE object to/from appropriate
lists in the share.
name_lock_locked_table():
Moved redundant code to find_write_locked_table() function and
adjusted code to the fact that wait_while_table_is_used() can
now return with an error if our thread is killed.
reopen_table_entry():
We no longer need "link_in" argument as with MDL we no longer
call this function with dummy TABLE object pre-allocated and
added to the THD::open_tables. Also now we add newly-open TABLE
instance to the list of share's used TABLE instances.
table_cache_insert_placeholder():
Got rid of name-locking legacy.
lock_table_name_if_not_cached():
Moved to sql_table.cc the only place where it is used. It was
also reimplemented using new MDL API.
open_table():
- Reworked this function to use new MDL subsystem.
- Changed code to deal with table definition cache directly
instead of going through separate table cache.
- Now third argument is also used for requesting table repair
or auto-discovery of table's new definition. So its type was
changed from bool to enum.
find_locked_table()/find_write_locked_table():
Accept head of list of TABLE objects as first argument and use
this list instead of always searching in THD::open_tables list.
Also added auxiliary for finding write-locked locked tables.
reopen_table():
Adjusted function to work with new MDL subsystem and to properly
manuipulate with lists of used/unused TABLE instaces in
TABLE_SHARE.
reopen_tables():
Removed mark_share_as_old parameter. Instead of relying on it
and related behavior FLUSH TABLES WITH READ LOCK now takes
global shared metadata lock. Changed code after removing
separate table cache.
drop_locked_tables()/abort_locked_tables():
Got rid of functions which are no longer needed.
unlock_locked_tables():
Moved this function from sql_parse.cc and changed it to release
memory which was used for allocating metadata lock requests for
tables open and locked by LOCK TABLES.
tdc_open_view():
Intoduced function for opening a view by getting its definition
from disk (and table cache in future).
reopen_table_entry():
Introduced function for opening table definitions while holding
exclusive metatadata lock on it.
open_unireg_entry():
Got rid of this function. Most of its functionality is relocated
to open_table() and open_table_fini() functions, and some of it
to reopen_table_entry() and tdc_open_view(). Also code
resposible for auto-repair and auto-discovery of tables was
moved to separate function.
open_table_entry_fini():
Introduced function which contains common actions which finalize
process of TABLE object creation.
auto_repair_table():
Moved code responsible for auto-repair of table being opened
here.
handle_failed_open_table_attempt()
Moved code responsible for handling failing attempt to open
table to one place (retry due to lock conflict/old version,
auto-discovery and repair).
open_tables():
- Flush open HANDLER tables if they have old version of if there
is conflicting metadata lock against them (before this moment
we had this code in open_table()).
- When we open view which should be processed via derived table
on the second execution of prepared statement or stored
routine we still should call open_table() for it in order to
obtain metadata lock on it and prepare its security context.
- In cases when we discover that some special handling of
failure to open table is needed call
handle_failed_open_table_attempt() which handles all such
scenarios.
open_ltable():
Handling of various special scenarios of failure to open a table
was moved to separate handle_failed_open_table_attempt()
function.
remove_db_from_cache():
Removed this function as it is no longer used.
notify_thread_having_shared_lock():
Added callback which is invoked by MDL subsystem when acquiring
an exclusive lock, for each thread that has a conflicting shared
metadata lock.
expel_table_from_cache():
Introduced function for removing unused TABLE instances. Unlike
remove_table_from_cache() it relies on caller following MDL
protocol and having appropriate locks when calling it and thus
does not do any waiting if table is still in use.
tdc_wait_for_old_version():
Added function which allows open_tables() to wait in cases when
we discover that we should back-off due to presence of old
version of table.
abort_and_upgrade_lock():
Use new MDL calls.
mysql_wait_completed_table():
Got rid of unused function.
open_system_tables_for_read/for_update()/performance_schema_table():
Allocate MDL_LOCK objects on execution memory root in cases when
TABLE_LIST objects for corresponding tables is allocated on
stack.
close_performance_schema_table():
Release metadata locks after closing tables.
******
Use I_P_List for free/used tables list in the table share.
sql/sql_binlog.cc:
Use Relay_log_info::slave_close_thread_tables() method to enforce
that we always close tables open for RBR before deallocating
TABLE_LIST elements and MDL_LOCK objects for them.
sql/sql_class.cc:
Added meta-data locking contexts as part of Open_tables_state
context. Also introduced THD::locked_tables_root memory root
which is to be used for allocating MDL_LOCK objects for tables in
LOCK TABLES statement (end of lifetime for such objects is UNLOCK
TABLES so we can't use statement or execution root for them).
sql/sql_class.h:
Added meta-data locking contexts as part of Open_tables_state
context. Also introduced THD::locked_tables_root memory root
which is to be used for allocating MDL_LOCK objects for tables in
LOCK TABLES statement (end of lifetime for such objects is UNLOCK
TABLES so we can't use statement or execution root for them).
Note: handler_mdl_context and locked_tables_root and
mdl_el_root will be removed by subsequent patches.
sql/sql_db.cc:
mysql_rm_db() does not really need to call remove_db_from_cache()
as it drops each table in the database using
mysql_rm_table_part2(), which performs all necessary operations on
table (definition) cache.
sql/sql_delete.cc:
Use the new metadata locking API for TRUNCATE.
sql/sql_handler.cc:
Changed HANDLER implementation to use new metadata locking
subsystem. Note that MDL_LOCK objects for HANDLER tables are
allocated in the same chunk of heap memory as TABLE_LIST object
for those tables.
sql/sql_insert.cc:
mysql_insert():
find_locked_table() now takes head of list of TABLE object as
its argument instead of always scanning through THD::open_tables
list.
handle_delayed_insert():
Allocate metadata lock request object for table open by delayed
insert thread on execution memroot. create_table_from_items():
We no longer allocate dummy TABLE objects for tables being
created if they don't exist. As consequence
reopen_name_locked_table() no longer has link_in argument.
open_table() now has one more argument which is not relevant for
temporary tables.
sql/sql_parse.cc:
- Moved unlock_locked_tables() routine to sql_base.cc and made
available it in other files. Got rid of some redundant code by
using this function.
- Replaced boolean TABLE_LIST::create member with enum
open_table_type member.
- Use special memory root for allocating MDL_LOCK objects for
tables open and locked by LOCK TABLES (these object should live
till UNLOCK TABLES so we can't allocate them on statement nor
execution memory root). Also properly set metadata lock
upgradability attribure for those tables.
- Under LOCK TABLES it is no longer allowed to flush tables which
are not write-locked as this breaks metadata locking protocol
and thus potentially might lead to deadlock.
- Added auxiliary adjust_mdl_locks_upgradability() function.
sql/sql_partition.cc:
Adjusted code to the fact that reopen_tables() no longer has
"mark_share_as_old" argument. Got rid of comments which are no
longer true.
sql/sql_plist.h:
Added I_P_List template class for parametrized intrusive doubly
linked lists and I_P_List_iterator for corresponding iterator.
Unlike for I_List<> list elements of such list can participate in
several lists. Unlike List<> such lists are doubly-linked and
intrusive.
sql/sql_plugin.cc:
Allocate metadata lock requests objects (MDL_LOCK) on execution
memory root in cases when we use stack TABLE_LIST objects to open
tables.
sql/sql_prepare.cc:
Replaced boolean TABLE_LIST::create member with enum
open_table_type member. This allows easily handle situation in
which instead of opening the table we want only to take exclusive
metadata lock on it.
sql/sql_rename.cc:
Use new metadata locking subsystem in implementation of RENAME
TABLE.
sql/sql_servers.cc:
Allocate metadata lock requests objects (MDL_LOCK) on execution
memory root in cases when we use stack TABLE_LIST objects to open
tables. Got rid of redundant code by using unlock_locked_tables()
function.
sql/sql_show.cc:
Acquire shared metadata lock when we are getting information for
I_S table directly from TABLE_SHARE without doing full-blown table
open. We use high priority lock request in this situation in
order to avoid deadlocks.
Also allocate metadata lock requests objects (MDL_LOCK) on
execution memory root in cases when TABLE_LIST objects are also
allocated there
sql/sql_table.cc:
mysql_rm_table():
Removed comment which is no longer relevant.
mysql_rm_table_part2():
Now caller of mysql_ha_rm_tables() should not own LOCK_open.
Adjusted code to use new metadata locking subsystem instead of
name-locks.
lock_table_name_if_not_cached():
Moved this function from sql_base.cc to this file and
reimplemented it using metadata locking API.
mysql_create_table():
Adjusted code to use new MDL API.
wait_while_table_is_used():
Changed function to use new MDL subsystem. Made thread waiting
in it killable (this also led to introduction of return value so
caller can distinguish successful executions from situations
when waiting was aborted).
close_cached_tables():
Thread waiting in this function is killable now. As result it
has return value for distinguishing between succes and failure.
Got rid of redundant boradcast_refresh() call.
prepare_for_repair():
Use MDL subsystem instead of name-locks.
mysql_admin_table():
mysql_ha_rm_tables() now always assumes that caller doesn't own
LOCK_open.
mysql_repair_table():
We should mark all elements of table list as requiring
upgradable metadata locks.
mysql_create_table_like():
Use new MDL subsystem instead of name-locks.
create_temporary_tables():
We don't need to obtain metadata locks when creating temporary
table.
mysql_fast_or_online_alter_table():
Thread waiting in wait_while_table_is_used() is now killable.
mysql_alter_table():
Adjusted code to work with new MDL subsystem and to the fact
that threads waiting in what_while_table_is_used() and
close_cached_table() are now killable.
sql/sql_test.cc:
We no longer have separate table cache. TABLE instances are now
associated with/linked to TABLE_SHARE objects in table definition
cache.
sql/sql_trigger.cc:
Adjusted code to work with new metadata locking subsystem. Also
reopen_tables() no longer has mark_share_as_old argument (Instead
of relying on this parameter and related behavior FLUSH TABLES
WITH READ LOCK now takes global shared metadata lock).
sql/sql_udf.cc:
Allocate metadata lock requests objects (MDL_LOCK) on execution
memory root in cases when we use stack TABLE_LIST objects to open
tables.
sql/sql_update.cc:
Adjusted code to work with new meta-data locking subsystem.
sql/sql_view.cc:
Added proper meta-data locking to implementations of
CREATE/ALTER/DROP VIEW statements. Now we obtain exclusive
meta-data lock on a view before creating/ changing/dropping it.
This ensures that all concurrent statements that use this view
will finish before our statement will proceed and therefore we
will get correct order of statements in the binary log.
Also ensure that TABLE_LIST::mdl_upgradable attribute is properly
propagated for underlying tables of view.
sql/table.cc:
Added auxiliary alloc_mdl_locks() function for allocating metadata
lock request objects for all elements of table list.
sql/table.h:
TABLE_SHARE:
Got rid of unused members. Introduced members for storing lists
of used and unused TABLE objects for this share.
TABLE:
Added members for linking TABLE objects into per-share lists of
used and unused TABLE instances. Added member for holding
pointer to metadata lock for this table.
TABLE_LIST:
Replaced boolean TABLE_LIST::create member with enum
open_table_type member. This allows easily handle situation in
which instead of opening the table we want only to take
exclusive meta-data lock on it (we need this in order to handle
ALTER VIEW and CREATE VIEW statements).
Introduced new mdl_upgradable member for marking elements of
table list for which we need to take upgradable shared metadata
lock instead of plain shared metadata lock. Added pointer for
holding pointer to MDL_LOCK for the table.
Added auxiliary alloc_mdl_locks() function for allocating metadata
lock requests objects for all elements of table list. Added
auxiliary set_all_mdl_upgradable() function for marking all
elements in table list as requiring upgradable metadata locks.
storage/myisammrg/ha_myisammrg.cc:
Allocate MDL_LOCK objects for underlying tables of MERGE table.
To be reworked once Ingo pushes his patch for WL4144.
2009-11-30 16:55:03 +01:00
|
|
|
1 SIMPLE X p1,p2 ALL a NULL NULL NULL 2 Using where
|
2005-12-29 07:32:46 +01:00
|
|
|
1 SIMPLE Y p1,p2 ref a a 4 test.X.a 2
|
|
|
|
drop table t1;
|
2006-01-04 09:09:01 +01:00
|
|
|
create table t1 (a int) partition by hash(a) partitions 20;
|
|
|
|
insert into t1 values (1),(2),(3);
|
|
|
|
explain partitions select * from t1 where a > 1 and a < 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t1 p2 system NULL NULL NULL NULL 1
|
2006-01-04 09:09:01 +01:00
|
|
|
explain partitions select * from t1 where a >= 1 and a < 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-01-29 01:22:32 +01:00
|
|
|
1 SIMPLE t1 p1,p2 ALL NULL NULL NULL NULL 2 Using where
|
2006-01-04 09:09:01 +01:00
|
|
|
explain partitions select * from t1 where a > 1 and a <= 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2,p3 ALL NULL NULL NULL NULL 2 Using where
|
2006-01-04 09:09:01 +01:00
|
|
|
explain partitions select * from t1 where a >= 1 and a <= 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p1,p2,p3 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
drop table t1;
|
|
|
|
create table t1 (a int, b int)
|
|
|
|
partition by list(a) subpartition by hash(b) subpartitions 20
|
|
|
|
(
|
|
|
|
partition p0 values in (0),
|
|
|
|
partition p1 values in (1),
|
|
|
|
partition p2 values in (2),
|
|
|
|
partition p3 values in (3)
|
|
|
|
);
|
|
|
|
insert into t1 values (1,1),(2,2),(3,3);
|
|
|
|
explain partitions select * from t1 where b > 1 and b < 3;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-02-25 00:51:01 +01:00
|
|
|
1 SIMPLE t1 p0_p0sp2,p1_p1sp2,p2_p2sp2,p3_p3sp2 system NULL NULL NULL NULL 1
|
2006-01-04 09:09:01 +01:00
|
|
|
explain partitions select * from t1 where b > 1 and b < 3 and (a =1 or a =2);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-02-25 00:51:01 +01:00
|
|
|
1 SIMPLE t1 p1_p1sp2,p2_p2sp2 system NULL NULL NULL NULL 1
|
2006-02-06 16:33:39 +01:00
|
|
|
drop table t1;
|
|
|
|
create table t1 (a int) partition by list(a) (
|
|
|
|
partition p0 values in (1,2),
|
|
|
|
partition p1 values in (3,4)
|
|
|
|
);
|
|
|
|
insert into t1 values (1),(1),(2),(2),(3),(4),(3),(4);
|
|
|
|
flush status;
|
|
|
|
update t1 set a=100 where a=5;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 0
|
|
|
|
flush status;
|
|
|
|
update t1 set a=100 where a+1=5+1;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 10
|
|
|
|
flush status;
|
|
|
|
delete from t1 where a=5;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 0
|
|
|
|
flush status;
|
|
|
|
delete from t1 where a+1=5+1;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 10
|
|
|
|
create table t2 like t1;
|
|
|
|
insert into t2 select * from t2;
|
|
|
|
flush status;
|
|
|
|
update t1,t2 set t1.a=1000, t2.a=1000 where t1.a=5 and t2.a=5;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 0
|
|
|
|
flush status;
|
|
|
|
delete t1,t2 from t1, t2 where t1.a=5 and t2.a=5;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 0
|
|
|
|
drop table t1,t2;
|
2006-01-29 01:22:32 +01:00
|
|
|
CREATE TABLE `t1` (
|
|
|
|
`a` int(11) default NULL
|
|
|
|
);
|
|
|
|
INSERT INTO t1 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
|
|
|
CREATE TABLE `t2` (
|
|
|
|
`a` int(11) default NULL,
|
|
|
|
KEY `a` (`a`)
|
|
|
|
) ;
|
|
|
|
insert into t2 select A.a + 10*(B.a + 10* C.a) from t1 A, t1 B, t1 C ;
|
|
|
|
insert into t1 select a from t2;
|
2006-02-06 16:33:39 +01:00
|
|
|
drop table t2;
|
2006-01-29 01:22:32 +01:00
|
|
|
CREATE TABLE `t2` (
|
|
|
|
`a` int(11) default NULL,
|
|
|
|
`b` int(11) default NULL
|
|
|
|
)
|
|
|
|
PARTITION BY RANGE (a) (
|
|
|
|
PARTITION p0 VALUES LESS THAN (200),
|
|
|
|
PARTITION p1 VALUES LESS THAN (400),
|
|
|
|
PARTITION p2 VALUES LESS THAN (600),
|
|
|
|
PARTITION p3 VALUES LESS THAN (800),
|
|
|
|
PARTITION p4 VALUES LESS THAN (1001));
|
|
|
|
insert into t2 select a,1 from t1 where a < 200;
|
|
|
|
insert into t2 select a,2 from t1 where a >= 200 and a < 400;
|
|
|
|
insert into t2 select a,3 from t1 where a >= 400 and a < 600;
|
|
|
|
insert into t2 select a,4 from t1 where a >= 600 and a < 800;
|
|
|
|
insert into t2 select a,5 from t1 where a >= 800 and a < 1001;
|
|
|
|
explain partitions select * from t2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 1010
|
|
|
|
explain partitions select * from t2 where a < 801 and a > 200;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p1,p2,p3,p4 ALL NULL NULL NULL NULL 800 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where a < 801 and a > 800;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p4 ALL NULL NULL NULL NULL 200 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where a > 600;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 400 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where a > 600 and b = 1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 400 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where a > 600 and b = 4;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 400 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where a > 600 and b = 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 400 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b = 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 1010 Using where
|
|
|
|
flush status;
|
|
|
|
update t2 set b = 100 where b = 6;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 1015
|
|
|
|
flush status;
|
|
|
|
update t2 set a = 1002 where a = 1001;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
2006-02-06 16:33:39 +01:00
|
|
|
Handler_read_rnd_next 0
|
2006-01-29 01:22:32 +01:00
|
|
|
flush status;
|
|
|
|
update t2 set b = 6 where a = 600;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
2006-02-06 16:33:39 +01:00
|
|
|
Handler_read_rnd_next 201
|
2006-01-29 01:22:32 +01:00
|
|
|
flush status;
|
|
|
|
update t2 set b = 6 where a > 600 and a < 800;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
2006-02-06 16:33:39 +01:00
|
|
|
Handler_read_rnd_next 201
|
2006-01-29 01:22:32 +01:00
|
|
|
flush status;
|
|
|
|
delete from t2 where a > 600;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
2006-02-06 16:33:39 +01:00
|
|
|
Handler_read_rnd_next 402
|
|
|
|
drop table t2;
|
2006-01-29 01:22:32 +01:00
|
|
|
CREATE TABLE `t2` (
|
|
|
|
`a` int(11) default NULL,
|
|
|
|
`b` int(11) default NULL,
|
|
|
|
index (b)
|
|
|
|
)
|
|
|
|
PARTITION BY RANGE (a) (
|
|
|
|
PARTITION p0 VALUES LESS THAN (200),
|
|
|
|
PARTITION p1 VALUES LESS THAN (400),
|
|
|
|
PARTITION p2 VALUES LESS THAN (600),
|
|
|
|
PARTITION p3 VALUES LESS THAN (800),
|
|
|
|
PARTITION p4 VALUES LESS THAN (1001));
|
|
|
|
insert into t2 select a,1 from t1 where a < 100;
|
|
|
|
insert into t2 select a,2 from t1 where a >= 200 and a < 300;
|
|
|
|
insert into t2 select a,3 from t1 where a >= 300 and a < 400;
|
|
|
|
insert into t2 select a,4 from t1 where a >= 400 and a < 500;
|
|
|
|
insert into t2 select a,5 from t1 where a >= 500 and a < 600;
|
|
|
|
insert into t2 select a,6 from t1 where a >= 600 and a < 700;
|
|
|
|
insert into t2 select a,7 from t1 where a >= 700 and a < 800;
|
|
|
|
insert into t2 select a,8 from t1 where a >= 800 and a < 900;
|
|
|
|
insert into t2 select a,9 from t1 where a >= 900 and a < 1001;
|
|
|
|
explain partitions select * from t2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 910
|
|
|
|
explain partitions select * from t2 where a = 101;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 110 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where a = 550;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 200 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where a = 833;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p4 ALL NULL NULL NULL NULL 200 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where (a = 100 OR a = 900);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p0,p4 ALL NULL NULL NULL NULL 310 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where (a > 100 AND a < 600);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p0,p1,p2 ALL NULL NULL NULL NULL 510 Using where
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b = 4;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ref b b 5 const 76 Using where
|
2006-07-28 19:27:01 +02:00
|
|
|
explain extended select * from t2 where b = 6;
|
|
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
|
|
1 SIMPLE t2 ref b b 5 const 76 100.00 Using where
|
|
|
|
Warnings:
|
|
|
|
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` = 6)
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b = 6;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ref b b 5 const 76 Using where
|
2006-07-28 19:27:01 +02:00
|
|
|
explain extended select * from t2 where b in (1,3,5);
|
|
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
|
|
1 SIMPLE t2 ALL b NULL NULL NULL 910 40.66 Using where
|
|
|
|
Warnings:
|
|
|
|
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` in (1,3,5))
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b in (1,3,5);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
|
2006-07-28 19:27:01 +02:00
|
|
|
explain extended select * from t2 where b in (2,4,6);
|
|
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
|
|
1 SIMPLE t2 ALL b NULL NULL NULL 910 25.05 Using where
|
|
|
|
Warnings:
|
|
|
|
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` in (2,4,6))
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b in (2,4,6);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
|
2006-07-28 19:27:01 +02:00
|
|
|
explain extended select * from t2 where b in (7,8,9);
|
|
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
|
|
1 SIMPLE t2 ALL b NULL NULL NULL 910 36.70 Using where
|
|
|
|
Warnings:
|
|
|
|
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` in (7,8,9))
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b in (7,8,9);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
|
2006-07-28 19:27:01 +02:00
|
|
|
explain extended select * from t2 where b > 5;
|
|
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
|
|
1 SIMPLE t2 ALL b NULL NULL NULL 910 44.84 Using where
|
|
|
|
Warnings:
|
|
|
|
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` > 5)
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b > 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
|
2006-07-28 19:27:01 +02:00
|
|
|
explain extended select * from t2 where b > 5 and b < 8;
|
|
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
|
|
1 SIMPLE t2 ALL b NULL NULL NULL 910 22.09 Using where
|
|
|
|
Warnings:
|
|
|
|
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` > 5) and (`test`.`t2`.`b` < 8))
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b > 5 and b < 8;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
|
2006-07-28 19:27:01 +02:00
|
|
|
explain extended select * from t2 where b > 5 and b < 7;
|
|
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
|
|
1 SIMPLE t2 range b b 5 NULL 76 100.00 Using where
|
|
|
|
Warnings:
|
|
|
|
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` > 5) and (`test`.`t2`.`b` < 7))
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b > 5 and b < 7;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 range b b 5 NULL 76 Using where
|
2006-07-28 19:27:01 +02:00
|
|
|
explain extended select * from t2 where b > 0 and b < 5;
|
|
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
|
|
1 SIMPLE t2 ALL b NULL NULL NULL 910 41.65 Using where
|
|
|
|
Warnings:
|
|
|
|
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` > 0) and (`test`.`t2`.`b` < 5))
|
2006-01-29 01:22:32 +01:00
|
|
|
explain partitions select * from t2 where b > 0 and b < 5;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
|
|
|
|
flush status;
|
|
|
|
update t2 set a = 111 where b = 10;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 0
|
|
|
|
show status like 'Handler_read_key';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_key 5
|
|
|
|
flush status;
|
|
|
|
update t2 set a = 111 where b in (5,6);
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 915
|
|
|
|
show status like 'Handler_read_key';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_key 0
|
|
|
|
flush status;
|
|
|
|
update t2 set a = 222 where b = 7;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 0
|
|
|
|
show status like 'Handler_read_key';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_key 5
|
|
|
|
flush status;
|
|
|
|
delete from t2 where b = 7;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_rnd_next 0
|
|
|
|
show status like 'Handler_read_key';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_key 5
|
|
|
|
flush status;
|
|
|
|
delete from t2 where b > 5;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
2007-09-11 17:47:17 +02:00
|
|
|
Handler_read_rnd_next 1215
|
2006-01-29 01:22:32 +01:00
|
|
|
show status like 'Handler_read_key';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_key 0
|
|
|
|
show status like 'Handler_read_prev';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_prev 0
|
|
|
|
show status like 'Handler_read_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_next 0
|
|
|
|
flush status;
|
|
|
|
delete from t2 where b < 5 or b > 3;
|
|
|
|
show status like 'Handler_read_rnd_next';
|
|
|
|
Variable_name Value
|
2007-09-11 17:47:17 +02:00
|
|
|
Handler_read_rnd_next 1215
|
2006-01-29 01:22:32 +01:00
|
|
|
show status like 'Handler_read_key';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_key 0
|
|
|
|
show status like 'Handler_read_prev';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_prev 0
|
|
|
|
show status like 'Handler_read_next';
|
|
|
|
Variable_name Value
|
|
|
|
Handler_read_next 0
|
|
|
|
drop table t1, t2;
|
2006-03-31 13:17:15 +02:00
|
|
|
create table t1 ( f_int1 mediumint, f_int2 integer)
|
|
|
|
partition by list(mod(f_int1,4)) (
|
|
|
|
partition p_3 values in (-3),
|
|
|
|
partition p_2 values in (-2),
|
|
|
|
partition p_1 values in (-1),
|
|
|
|
partition p0 values in (0),
|
|
|
|
partition p1 values in (1),
|
|
|
|
partition p2 values in (2),
|
|
|
|
partition p3 values in (3)
|
|
|
|
);
|
|
|
|
insert into t1 values (9, 9), (8, 8), (7, 7), (6, 6), (5, 5),
|
|
|
|
(4, 4), (3, 3), (2, 2), (1, 1);
|
|
|
|
select * from t1 where f_int1 between 5 and 15 order by f_int1;
|
|
|
|
f_int1 f_int2
|
|
|
|
5 5
|
|
|
|
6 6
|
|
|
|
7 7
|
|
|
|
8 8
|
|
|
|
9 9
|
|
|
|
drop table t1;
|
2006-04-03 22:52:14 +02:00
|
|
|
create table t1 (f_int1 integer) partition by list(abs(mod(f_int1,2)))
|
|
|
|
subpartition by hash(f_int1) subpartitions 2
|
|
|
|
(
|
|
|
|
partition part1 values in (0),
|
|
|
|
partition part2 values in (1),
|
|
|
|
partition part4 values in (null)
|
|
|
|
);
|
|
|
|
insert into t1 set f_int1 = null;
|
|
|
|
select * from t1 where f_int1 is null;
|
|
|
|
f_int1
|
|
|
|
NULL
|
|
|
|
explain partitions select * from t1 where f_int1 is null;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-04-12 05:35:48 +02:00
|
|
|
1 SIMPLE t1 part4_part4sp0 system NULL NULL NULL NULL 1
|
2006-04-06 19:23:33 +02:00
|
|
|
drop table t1;
|
|
|
|
create table t1 (a int not null, b int not null)
|
|
|
|
partition by list(a)
|
|
|
|
subpartition by hash(b) subpartitions 4
|
|
|
|
(
|
|
|
|
partition p0 values in (1),
|
|
|
|
partition p1 values in (2),
|
|
|
|
partition p2 values in (3)
|
|
|
|
);
|
|
|
|
insert into t1 values (1,1),(1,2),(1,3),(1,4),
|
|
|
|
(2,1),(2,2),(2,3),(2,4);
|
|
|
|
explain partitions select * from t1 where a=1 AND (b=1 OR b=2);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0_p0sp1,p0_p0sp2 ALL NULL NULL NULL NULL 2 Using where
|
|
|
|
drop table t1;
|
|
|
|
create table t1 (a int, b int not null)
|
|
|
|
partition by list(a)
|
|
|
|
subpartition by hash(b) subpartitions 2
|
|
|
|
(
|
|
|
|
partition p0 values in (1),
|
|
|
|
partition p1 values in (2),
|
|
|
|
partition p2 values in (3),
|
|
|
|
partition pn values in (NULL)
|
|
|
|
);
|
|
|
|
insert into t1 values (1,1),(1,2),(1,3),(1,4),
|
|
|
|
(2,1),(2,2),(2,3),(2,4), (NULL,1);
|
|
|
|
explain partitions select * from t1 where a IS NULL AND (b=1 OR b=2);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-04-12 05:35:48 +02:00
|
|
|
1 SIMPLE t1 pn_pnsp0,pn_pnsp1 system NULL NULL NULL NULL 1
|
2006-04-06 19:23:33 +02:00
|
|
|
explain partitions select * from t1 where (a IS NULL or a < 1) AND (b=1 OR b=2);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-04-12 05:35:48 +02:00
|
|
|
1 SIMPLE t1 pn_pnsp0,pn_pnsp1 system NULL NULL NULL NULL 1
|
2006-04-06 19:23:33 +02:00
|
|
|
explain partitions select * from t1 where (a IS NULL or a < 2) AND (b=1 OR b=2);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-04-12 05:35:48 +02:00
|
|
|
1 SIMPLE t1 p0_p0sp0,p0_p0sp1,pn_pnsp0,pn_pnsp1 ALL NULL NULL NULL NULL 5 Using where
|
2006-04-06 19:23:33 +02:00
|
|
|
explain partitions select * from t1 where (a IS NULL or a <= 1) AND (b=1 OR b=2);
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2006-04-12 05:35:48 +02:00
|
|
|
1 SIMPLE t1 p0_p0sp0,p0_p0sp1,pn_pnsp0,pn_pnsp1 ALL NULL NULL NULL NULL 5 Using where
|
2006-04-06 19:23:33 +02:00
|
|
|
drop table t1;
|
|
|
|
create table t1 ( a int) partition by list (MOD(a, 10))
|
|
|
|
( partition p0 values in (0), partition p1 values in (1),
|
|
|
|
partition p2 values in (2), partition p3 values in (3),
|
|
|
|
partition p4 values in (4), partition p5 values in (5),
|
|
|
|
partition p6 values in (6), partition pn values in (NULL)
|
|
|
|
);
|
|
|
|
insert into t1 values (NULL), (0),(1),(2),(3),(4),(5),(6);
|
|
|
|
explain partitions select * from t1 where a is null or a < 2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,pn ALL NULL NULL NULL NULL 8 Using where
|
|
|
|
drop table t1;
|
|
|
|
create table t1 (s1 int) partition by list (s1)
|
|
|
|
(partition p1 values in (0),
|
|
|
|
partition p2 values in (1),
|
|
|
|
partition p3 values in (null));
|
|
|
|
insert into t1 values (0),(1),(null);
|
|
|
|
select count(*) from t1 where s1 < 0 or s1 is null;
|
|
|
|
count(*)
|
|
|
|
1
|
|
|
|
explain partitions select count(*) from t1 where s1 < 0 or s1 is null;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p3 system NULL NULL NULL NULL 1
|
|
|
|
drop table t1;
|
2006-04-10 19:07:50 +02:00
|
|
|
create table t1 (a char(32) primary key)
|
|
|
|
partition by key()
|
|
|
|
partitions 100;
|
|
|
|
insert into t1 values ('na');
|
|
|
|
select * from t1;
|
|
|
|
a
|
|
|
|
na
|
|
|
|
select * from t1 where a like 'n%';
|
|
|
|
a
|
|
|
|
na
|
|
|
|
drop table t1;
|
2006-06-04 15:17:37 +02:00
|
|
|
create table t1 (s1 varchar(15)) partition by key (s1);
|
|
|
|
select * from t1 where s1 = 0 or s1 is null;
|
|
|
|
s1
|
|
|
|
insert into t1 values ('aa'),('bb'),('0');
|
|
|
|
explain partitions select * from t1 where s1 = 0 or s1 is null;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 3 Using where
|
|
|
|
drop table t1;
|
2006-06-05 13:15:28 +02:00
|
|
|
create table t2 (a int, b int)
|
|
|
|
partition by LIST(a)
|
|
|
|
subpartition by HASH(b) subpartitions 40
|
|
|
|
( partition p_0_long_partition_name values in(1),
|
|
|
|
partition p_1_long_partition_name values in(2));
|
|
|
|
insert into t2 values (1,1),(2,2);
|
|
|
|
explain partitions select * from t2;
|
|
|
|
id 1
|
|
|
|
select_type SIMPLE
|
|
|
|
table t2
|
|
|
|
partitions p_0_long_partition_name_p_0_long_partition_namesp0,p_0_long_partition_name_p_0_long_partition_namesp1,p_0_long_partition_name_p_0_long_partition_namesp2,p_0_long_partition_name_p_0_long_partition_namesp3,p_0_long_partition_name_p_0_long_partition_namesp4,p_0_long_partition_name_p_0_long_partition_namesp5,p_0_long_partition_name_p_0_long_partition_namesp6,p_0_long_partition_name_p_0_long_partition_namesp7,p_0_long_partition_name_p_0_long_partition_namesp8,p_0_long_partition_name_p_0_long_partition_namesp9,p_0_long_partition_name_p_0_long_partition_namesp10,p_0_long_partition_name_p_0_long_partition_namesp11,p_0_long_partition_name_p_0_long_partition_namesp12,p_0_long_partition_name_p_0_long_partition_namesp13,p_0_long_partition_name_p_0_long_partition_namesp14,p_0_long_partition_name_p_0_long_partition_namesp15,p_0_long_partition_name_p_0_long_partition_namesp16,p_0_long_partition_name_p_0_long_partition_namesp17,p_0_long_partition_name_p_0_long_partition_namesp18,p_0_long_partition_name_p_0_long_partition_namesp19,p_0_long_partition_name_p_0_long_partition_namesp20,p_0_long_partition_name_p_0_long_partition_namesp21,p_0_long_partition_name_p_0_long_partition_namesp22,p_0_long_partition_name_p_0_long_partition_namesp23,p_0_long_partition_name_p_0_long_partition_namesp24,p_0_long_partition_name_p_0_long_partition_namesp25,p_0_long_partition_name_p_0_long_partition_namesp26,p_0_long_partition_name_p_0_long_partition_namesp27,p_0_long_partition_name_p_0_long_partition_namesp28,p_0_long_partition_name_p_0_long_partition_namesp29,p_0_long_partition_name_p_0_long_partition_namesp30,p_0_long_partition_name_p_0_long_partition_namesp31,p_0_long_partition_name_p_0_long_partition_namesp32,p_0_long_partition_name_p_0_long_partition_namesp33,p_0_long_partition_name_p_0_long_partition_namesp34,p_0_long_partition_name_p_0_long_partition_namesp35,p_0_long_partition_name_p_0_long_partition_namesp36,p_0_long_partition_name_p_0_long_partition_namesp37,p_0_long_partition_name_p_0_long_partition_namesp38,p_0_long_partition_name_p_0_long_partition_namesp39,p_1_long_partition_name_p_1_long_partition_namesp0,p_1_long_partition_name_p_1_long_partition_namesp1,p_1_long_partition_name_p_1_long_partition_namesp2,p_1_long_partition_name_p_1_long_partition_namesp3,p_1_long_partition_name_p_1_long_partition_namesp4,p_1_long_partition_name_p_1_long_partition_namesp5,p_1_long_partition_name_p_1_long_partition_namesp6,p_1_long_partition_name_p_1_long_partition_namesp7,p_1_long_partition_name_p_1_long_partition_namesp8,p_1_long_partition_name_p_1_long_partition_namesp9,p_1_long_partition_name_p_1_long_partition_namesp10,p_1_long_partition_name_p_1_long_partition_namesp11,p_1_long_partition_name_p_1_long_partition_namesp12,p_1_long_partition_name_p_1_long_partition_namesp13,p_1_long_partition_name_p_1_long_partition_namesp14,p_1_long_partition_name_p_1_long_partition_namesp15,p_1_long_partition_name_p_1_long_partition_namesp16,p_1_long_partition_name_p_1_long_partition_namesp17,p_1_long_partition_name_p_1_long_partition_namesp18,p_1_long_partition_name_p_1_long_partition_namesp19,p_1_long_partition_name_p_1_long_partition_namesp20,p_1_long_partition_name_p_1_long_partition_namesp21,p_1_long_partition_name_p_1_long_partition_namesp22,p_1_long_partition_name_p_1_long_partition_namesp23,p_1_long_partition_name_p_1_long_partition_namesp24,p_1_long_partition_name_p_1_long_partition_namesp25,p_1_long_partition_name_p_1_long_partition_namesp26,p_1_long_partition_name_p_1_long_partition_namesp27,p_1_long_partition_name_p_1_long_partition_namesp28,p_1_long_partition_name_p_1_long_partition_namesp29,p_1_long_partition_name_p_1_long_partition_namesp30,p_1_long_partition_name_p_1_long_partition_namesp31,p_1_long_partition_name_p_1_long_partition_namesp32,p_1_long_partition_name_p_1_long_partition_namesp33,p_1_long_partition_name_p_1_long_partition_namesp34,p_1_long_partition_name_p_1_long_partition_namesp35,p_1_long_partition_name_p_1_long_partition_namesp36,p_1_long_partition_name_p_1_long_partition_namesp37,p_1_long_partition_name_p_1_long_partition_names
|
|
|
|
type ALL
|
|
|
|
possible_keys NULL
|
|
|
|
key NULL
|
|
|
|
key_len NULL
|
|
|
|
ref NULL
|
|
|
|
rows 2
|
|
|
|
Extra
|
|
|
|
drop table t2;
|
2006-06-30 07:34:06 +02:00
|
|
|
create table t1 (s1 int);
|
|
|
|
explain partitions select 1 from t1 union all select 2;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 PRIMARY t1 NULL system NULL NULL NULL NULL 0 const row not found
|
|
|
|
2 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
|
|
|
NULL UNION RESULT <union1,2> NULL ALL NULL NULL NULL NULL NULL
|
|
|
|
drop table t1;
|
2006-07-24 19:58:11 +02:00
|
|
|
create table t1 (a bigint unsigned not null) partition by range(a) (
|
|
|
|
partition p0 values less than (10),
|
|
|
|
partition p1 values less than (100),
|
|
|
|
partition p2 values less than (1000),
|
|
|
|
partition p3 values less than (18446744073709551000),
|
|
|
|
partition p4 values less than (18446744073709551614)
|
|
|
|
);
|
|
|
|
insert into t1 values (5),(15),(105),(1005);
|
|
|
|
insert into t1 values (18446744073709551000+1);
|
|
|
|
insert into t1 values (18446744073709551614-1);
|
|
|
|
explain partitions select * from t1 where a < 10;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0 system NULL NULL NULL NULL 1
|
|
|
|
explain partitions select * from t1
|
|
|
|
where a >= 18446744073709551000-1 and a <= 18446744073709551000+1;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p3,p4 ALL NULL NULL NULL NULL 3 Using where
|
2006-07-24 19:58:11 +02:00
|
|
|
explain partitions select * from t1
|
|
|
|
where a between 18446744073709551001 and 18446744073709551002;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p4 ALL NULL NULL NULL NULL 2 Using where
|
2006-07-24 19:58:11 +02:00
|
|
|
explain partitions select * from t1 where a = 18446744073709551000;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p4 ALL NULL NULL NULL NULL 2 Using where
|
2006-07-24 19:58:11 +02:00
|
|
|
explain partitions select * from t1 where a = 18446744073709551613;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p4 ALL NULL NULL NULL NULL 2 Using where
|
2006-07-24 19:58:11 +02:00
|
|
|
explain partitions select * from t1 where a = 18446744073709551614;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
drop table t1;
|
2007-04-06 14:10:37 +02:00
|
|
|
create table t1 (a int)
|
2007-04-04 16:26:32 +02:00
|
|
|
partition by range(a) (
|
|
|
|
partition p0 values less than (64),
|
|
|
|
partition p1 values less than (128),
|
|
|
|
partition p2 values less than (255)
|
|
|
|
);
|
|
|
|
create table t2 (a int)
|
|
|
|
partition by range(a+0) (
|
|
|
|
partition p0 values less than (64),
|
|
|
|
partition p1 values less than (128),
|
|
|
|
partition p2 values less than (255)
|
2006-07-24 19:58:11 +02:00
|
|
|
);
|
|
|
|
insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
2007-04-04 16:26:32 +02:00
|
|
|
insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
2006-07-24 19:58:11 +02:00
|
|
|
explain partitions select * from t1 where a=0;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
|
2007-04-04 16:26:32 +02:00
|
|
|
explain partitions select * from t2 where a=0;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
|
2006-07-24 19:58:11 +02:00
|
|
|
explain partitions select * from t1 where a=0xFE;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
|
2007-04-04 16:26:32 +02:00
|
|
|
explain partitions select * from t2 where a=0xFE;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where
|
2007-04-04 16:26:32 +02:00
|
|
|
explain partitions select * from t1 where a > 0xFE AND a <= 0xFF;
|
2006-07-24 19:58:11 +02:00
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2007-04-04 16:26:32 +02:00
|
|
|
explain partitions select * from t2 where a > 0xFE AND a <= 0xFF;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t1 where a >= 0xFE AND a <= 0xFF;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
|
2007-04-04 16:26:32 +02:00
|
|
|
explain partitions select * from t2 where a >= 0xFE AND a <= 0xFF;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where
|
2007-04-04 16:26:32 +02:00
|
|
|
explain partitions select * from t1 where a < 64 AND a >= 63;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
|
2007-04-04 16:26:32 +02:00
|
|
|
explain partitions select * from t2 where a < 64 AND a >= 63;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
|
2007-04-04 16:26:32 +02:00
|
|
|
explain partitions select * from t1 where a <= 64 AND a >= 63;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 4 Using where
|
2007-04-04 16:26:32 +02:00
|
|
|
explain partitions select * from t2 where a <= 64 AND a >= 63;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
2010-08-26 17:14:18 +02:00
|
|
|
1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 4 Using where
|
2006-07-24 19:58:11 +02:00
|
|
|
drop table t1;
|
2007-04-04 16:26:32 +02:00
|
|
|
drop table t2;
|
2006-07-24 19:58:11 +02:00
|
|
|
create table t1(a bigint unsigned not null) partition by range(a+0) (
|
|
|
|
partition p1 values less than (10),
|
|
|
|
partition p2 values less than (20),
|
|
|
|
partition p3 values less than (2305561538531885056),
|
|
|
|
partition p4 values less than (2305561538531950591)
|
|
|
|
);
|
|
|
|
insert into t1 values (9),(19),(0xFFFF0000FFFF000-1), (0xFFFF0000FFFFFFF-1);
|
|
|
|
insert into t1 values (9),(19),(0xFFFF0000FFFF000-1), (0xFFFF0000FFFFFFF-1);
|
|
|
|
explain partitions select * from t1 where
|
|
|
|
a >= 2305561538531885056-10 and a <= 2305561538531885056-8;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p3 ALL NULL NULL NULL NULL 4 Using where
|
|
|
|
explain partitions select * from t1 where
|
|
|
|
a > 0xFFFFFFFFFFFFFFEC and a < 0xFFFFFFFFFFFFFFEE;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
|
|
explain partitions select * from t1 where a>=0 and a <= 0xFFFFFFFFFFFFFFFF;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p1,p2,p3,p4 ALL NULL NULL NULL NULL 8 Using where
|
|
|
|
drop table t1;
|
|
|
|
create table t1 (a bigint) partition by range(a+0) (
|
|
|
|
partition p1 values less than (-1000),
|
|
|
|
partition p2 values less than (-10),
|
|
|
|
partition p3 values less than (10),
|
|
|
|
partition p4 values less than (1000)
|
|
|
|
);
|
|
|
|
insert into t1 values (-15),(-5),(5),(15),(-15),(-5),(5),(15);
|
|
|
|
explain partitions select * from t1 where a>-2 and a <=0;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p3 ALL NULL NULL NULL NULL 4 Using where
|
|
|
|
drop table t1;
|
2007-09-14 12:18:42 +02:00
|
|
|
CREATE TABLE t1 ( recdate DATETIME NOT NULL )
|
|
|
|
PARTITION BY RANGE( TO_DAYS(recdate) ) (
|
|
|
|
PARTITION p0 VALUES LESS THAN ( TO_DAYS('2007-03-08') ),
|
|
|
|
PARTITION p1 VALUES LESS THAN ( TO_DAYS('2007-04-01') )
|
|
|
|
);
|
|
|
|
INSERT INTO t1 VALUES ('2007-03-01 12:00:00');
|
|
|
|
INSERT INTO t1 VALUES ('2007-03-07 12:00:00');
|
|
|
|
INSERT INTO t1 VALUES ('2007-03-08 12:00:00');
|
|
|
|
INSERT INTO t1 VALUES ('2007-03-15 12:00:00');
|
|
|
|
must use p0 only:
|
|
|
|
explain partitions select * from t1 where recdate < '2007-03-08 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
|
|
|
|
drop table t1;
|
|
|
|
CREATE TABLE t1 ( recdate DATETIME NOT NULL )
|
|
|
|
PARTITION BY RANGE( YEAR(recdate) ) (
|
|
|
|
PARTITION p0 VALUES LESS THAN (2006),
|
|
|
|
PARTITION p1 VALUES LESS THAN (2007)
|
|
|
|
);
|
|
|
|
INSERT INTO t1 VALUES ('2005-03-01 12:00:00');
|
|
|
|
INSERT INTO t1 VALUES ('2005-03-01 12:00:00');
|
|
|
|
INSERT INTO t1 VALUES ('2006-03-01 12:00:00');
|
|
|
|
INSERT INTO t1 VALUES ('2006-03-01 12:00:00');
|
|
|
|
must use p0 only:
|
|
|
|
explain partitions select * from t1 where recdate < '2006-01-01 00:00:00';
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
|
|
|
|
drop table t1;
|
2009-10-05 22:59:19 +02:00
|
|
|
#
|
|
|
|
# BUG#33730 Full table scan instead selected partitions for query more than 10 partitions
|
|
|
|
#
|
|
|
|
create table t0 (a int);
|
|
|
|
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
|
|
|
create table t1 (a int)
|
|
|
|
partition by range(a+0) (
|
|
|
|
partition p0 values less than (64),
|
|
|
|
partition p1 values less than (128),
|
|
|
|
partition p2 values less than (255)
|
|
|
|
);
|
|
|
|
insert into t1 select A.a + 10*B.a from t0 A, t0 B;
|
|
|
|
explain partitions select * from t1 where a between 10 and 13;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 64 Using where
|
|
|
|
explain partitions select * from t1 where a between 10 and 10+33;
|
|
|
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
|
|
1 SIMPLE t1 p0,p1,p2 ALL NULL NULL NULL NULL 100 Using where
|
|
|
|
drop table t0, t1;
|