You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

4386 lines
262 KiB

set @@session.tidb_enable_table_partition=1;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
#
# 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 SELECT * FROM t1 WHERE a <= 1;
id estRows task access object operator info
PartitionUnion_8 2.00 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,1], keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,1], keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE a < 7;
id estRows task access object operator info
PartitionUnion_13 49.00 root
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_21 3333.33 root data:TableRangeScan_20
│ └─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_23 3333.33 root data:TableRangeScan_22
│ └─TableRangeScan_22 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_25 3333.33 root data:TableRangeScan_24
│ └─TableRangeScan_24 3333.33 cop[tikv] table:t1, partition:p5 range:[-inf,7), keep order:false, stats:pseudo
└─TableReader_27 3333.33 root data:TableRangeScan_26
└─TableRangeScan_26 3333.33 cop[tikv] table:t1, partition:max range:[-inf,7), keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE a <= 1;
id estRows task access object operator info
PartitionUnion_8 2.00 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,1], keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,1], keep order:false, stats:pseudo
DROP TABLE t1;
#
# 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 order by a;
a
-1
0
EXPLAIN SELECT * FROM t1 WHERE a < 1;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,1), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 2 order by a;
a
-1
0
1
EXPLAIN SELECT * FROM t1 WHERE a < 2;
id estRows task access object operator info
PartitionUnion_8 4.00 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,2), keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,2), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 3 order by a;
a
-1
0
1
2
EXPLAIN SELECT * FROM t1 WHERE a < 3;
id estRows task access object operator info
PartitionUnion_9 9.00 root
├─TableReader_11 3333.33 root data:TableRangeScan_10
│ └─TableRangeScan_10 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,3), keep order:false, stats:pseudo
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,3), keep order:false, stats:pseudo
└─TableReader_15 3333.33 root data:TableRangeScan_14
└─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,3), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 4 order by a;
a
-1
0
1
2
3
EXPLAIN SELECT * FROM t1 WHERE a < 4;
id estRows task access object operator info
PartitionUnion_10 16.00 root
├─TableReader_12 3333.33 root data:TableRangeScan_11
│ └─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,4), keep order:false, stats:pseudo
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,4), keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,4), keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:TableRangeScan_17
└─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,4), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 5 order by a;
a
-1
0
1
2
3
4
EXPLAIN SELECT * FROM t1 WHERE a < 5;
id estRows task access object operator info
PartitionUnion_11 25.00 root
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,5), keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,5), keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,5), keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,5), keep order:false, stats:pseudo
└─TableReader_21 3333.33 root data:TableRangeScan_20
└─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,5), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 6 order by a;
a
-1
0
1
2
3
4
5
EXPLAIN SELECT * FROM t1 WHERE a < 6;
id estRows task access object operator info
PartitionUnion_12 36.00 root
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,6), keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,6), keep order:false, stats:pseudo
├─TableReader_18 3333.33 root data:TableRangeScan_17
│ └─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,6), keep order:false, stats:pseudo
├─TableReader_20 3333.33 root data:TableRangeScan_19
│ └─TableRangeScan_19 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,6), keep order:false, stats:pseudo
├─TableReader_22 3333.33 root data:TableRangeScan_21
│ └─TableRangeScan_21 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,6), keep order:false, stats:pseudo
└─TableReader_24 3333.33 root data:TableRangeScan_23
└─TableRangeScan_23 3333.33 cop[tikv] table:t1, partition:p5 range:[-inf,6), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 7 order by a;
a
-1
0
1
2
3
4
5
6
EXPLAIN SELECT * FROM t1 WHERE a < 7;
id estRows task access object operator info
PartitionUnion_13 49.00 root
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_21 3333.33 root data:TableRangeScan_20
│ └─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_23 3333.33 root data:TableRangeScan_22
│ └─TableRangeScan_22 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,7), keep order:false, stats:pseudo
├─TableReader_25 3333.33 root data:TableRangeScan_24
│ └─TableRangeScan_24 3333.33 cop[tikv] table:t1, partition:p5 range:[-inf,7), keep order:false, stats:pseudo
└─TableReader_27 3333.33 root data:TableRangeScan_26
└─TableRangeScan_26 3333.33 cop[tikv] table:t1, partition:max range:[-inf,7), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 1 order by a;
a
-1
0
1
EXPLAIN SELECT * FROM t1 WHERE a <= 1;
id estRows task access object operator info
PartitionUnion_8 2.00 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,1], keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,1], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 2 order by a;
a
-1
0
1
2
EXPLAIN SELECT * FROM t1 WHERE a <= 2;
id estRows task access object operator info
PartitionUnion_9 6.00 root
├─TableReader_11 3333.33 root data:TableRangeScan_10
│ └─TableRangeScan_10 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,2], keep order:false, stats:pseudo
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,2], keep order:false, stats:pseudo
└─TableReader_15 3333.33 root data:TableRangeScan_14
└─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,2], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 3 order by a;
a
-1
0
1
2
3
EXPLAIN SELECT * FROM t1 WHERE a <= 3;
id estRows task access object operator info
PartitionUnion_10 12.00 root
├─TableReader_12 3333.33 root data:TableRangeScan_11
│ └─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,3], keep order:false, stats:pseudo
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,3], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,3], keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:TableRangeScan_17
└─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,3], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 4 order by a;
a
-1
0
1
2
3
4
EXPLAIN SELECT * FROM t1 WHERE a <= 4;
id estRows task access object operator info
PartitionUnion_11 20.00 root
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,4], keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,4], keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,4], keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,4], keep order:false, stats:pseudo
└─TableReader_21 3333.33 root data:TableRangeScan_20
└─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,4], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 5 order by a;
a
-1
0
1
2
3
4
5
EXPLAIN SELECT * FROM t1 WHERE a <= 5;
id estRows task access object operator info
PartitionUnion_12 30.00 root
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,5], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,5], keep order:false, stats:pseudo
├─TableReader_18 3333.33 root data:TableRangeScan_17
│ └─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,5], keep order:false, stats:pseudo
├─TableReader_20 3333.33 root data:TableRangeScan_19
│ └─TableRangeScan_19 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,5], keep order:false, stats:pseudo
├─TableReader_22 3333.33 root data:TableRangeScan_21
│ └─TableRangeScan_21 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,5], keep order:false, stats:pseudo
└─TableReader_24 3333.33 root data:TableRangeScan_23
└─TableRangeScan_23 3333.33 cop[tikv] table:t1, partition:p5 range:[-inf,5], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 6 order by a;
a
-1
0
1
2
3
4
5
6
EXPLAIN SELECT * FROM t1 WHERE a <= 6;
id estRows task access object operator info
PartitionUnion_13 42.00 root
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,6], keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,6], keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,6], keep order:false, stats:pseudo
├─TableReader_21 3333.33 root data:TableRangeScan_20
│ └─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,6], keep order:false, stats:pseudo
├─TableReader_23 3333.33 root data:TableRangeScan_22
│ └─TableRangeScan_22 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,6], keep order:false, stats:pseudo
├─TableReader_25 3333.33 root data:TableRangeScan_24
│ └─TableRangeScan_24 3333.33 cop[tikv] table:t1, partition:p5 range:[-inf,6], keep order:false, stats:pseudo
└─TableReader_27 3333.33 root data:TableRangeScan_26
└─TableRangeScan_26 3333.33 cop[tikv] table:t1, partition:max range:[-inf,6], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 7 order by a;
a
-1
0
1
2
3
4
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a <= 7;
id estRows task access object operator info
PartitionUnion_13 49.00 root
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,7], keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,7], keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,7], keep order:false, stats:pseudo
├─TableReader_21 3333.33 root data:TableRangeScan_20
│ └─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,7], keep order:false, stats:pseudo
├─TableReader_23 3333.33 root data:TableRangeScan_22
│ └─TableRangeScan_22 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,7], keep order:false, stats:pseudo
├─TableReader_25 3333.33 root data:TableRangeScan_24
│ └─TableRangeScan_24 3333.33 cop[tikv] table:t1, partition:p5 range:[-inf,7], keep order:false, stats:pseudo
└─TableReader_27 3333.33 root data:TableRangeScan_26
└─TableRangeScan_26 3333.33 cop[tikv] table:t1, partition:max range:[-inf,7], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a = 1 order by a;
a
1
EXPLAIN SELECT * FROM t1 WHERE a = 1;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:p1 handle:1
SELECT * FROM t1 WHERE a = 2 order by a;
a
2
EXPLAIN SELECT * FROM t1 WHERE a = 2;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:p2 handle:2
SELECT * FROM t1 WHERE a = 3 order by a;
a
3
EXPLAIN SELECT * FROM t1 WHERE a = 3;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:p3 handle:3
SELECT * FROM t1 WHERE a = 4 order by a;
a
4
EXPLAIN SELECT * FROM t1 WHERE a = 4;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:p4 handle:4
SELECT * FROM t1 WHERE a = 5 order by a;
a
5
EXPLAIN SELECT * FROM t1 WHERE a = 5;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:p5 handle:5
SELECT * FROM t1 WHERE a = 6 order by a;
a
6
EXPLAIN SELECT * FROM t1 WHERE a = 6;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:max handle:6
SELECT * FROM t1 WHERE a = 7 order by a;
a
7
EXPLAIN SELECT * FROM t1 WHERE a = 7;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:max handle:7
SELECT * FROM t1 WHERE a >= 1 order by a;
a
1
2
3
4
5
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a >= 1;
id estRows task access object operator info
PartitionUnion_12 20000.00 root
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p1 range:[1,+inf], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p2 range:[1,+inf], keep order:false, stats:pseudo
├─TableReader_18 3333.33 root data:TableRangeScan_17
│ └─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p3 range:[1,+inf], keep order:false, stats:pseudo
├─TableReader_20 3333.33 root data:TableRangeScan_19
│ └─TableRangeScan_19 3333.33 cop[tikv] table:t1, partition:p4 range:[1,+inf], keep order:false, stats:pseudo
├─TableReader_22 3333.33 root data:TableRangeScan_21
│ └─TableRangeScan_21 3333.33 cop[tikv] table:t1, partition:p5 range:[1,+inf], keep order:false, stats:pseudo
└─TableReader_24 3333.33 root data:TableRangeScan_23
└─TableRangeScan_23 3333.33 cop[tikv] table:t1, partition:max range:[1,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 2 order by a;
a
2
3
4
5
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a >= 2;
id estRows task access object operator info
PartitionUnion_11 16666.67 root
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p2 range:[2,+inf], keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p3 range:[2,+inf], keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p4 range:[2,+inf], keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p5 range:[2,+inf], keep order:false, stats:pseudo
└─TableReader_21 3333.33 root data:TableRangeScan_20
└─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:max range:[2,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 3 order by a;
a
3
4
5
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a >= 3;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_12 3333.33 root data:TableRangeScan_11
│ └─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p3 range:[3,+inf], keep order:false, stats:pseudo
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p4 range:[3,+inf], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p5 range:[3,+inf], keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:TableRangeScan_17
└─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:max range:[3,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 4 order by a;
a
4
5
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a >= 4;
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_11 3333.33 root data:TableRangeScan_10
│ └─TableRangeScan_10 3333.33 cop[tikv] table:t1, partition:p4 range:[4,+inf], keep order:false, stats:pseudo
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p5 range:[4,+inf], keep order:false, stats:pseudo
└─TableReader_15 3333.33 root data:TableRangeScan_14
└─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:max range:[4,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 5 order by a;
a
5
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a >= 5;
id estRows task access object operator info
PartitionUnion_8 6666.67 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p5 range:[5,+inf], keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:max range:[5,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 6 order by a;
a
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a >= 6;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:[6,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 7 order by a;
a
7
8
EXPLAIN SELECT * FROM t1 WHERE a >= 7;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:[7,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 1 order by a;
a
2
3
4
5
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a > 1;
id estRows task access object operator info
PartitionUnion_11 16666.67 root
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p2 range:(1,+inf], keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p3 range:(1,+inf], keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p4 range:(1,+inf], keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p5 range:(1,+inf], keep order:false, stats:pseudo
└─TableReader_21 3333.33 root data:TableRangeScan_20
└─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:max range:(1,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 2 order by a;
a
3
4
5
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a > 2;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_12 3333.33 root data:TableRangeScan_11
│ └─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p3 range:(2,+inf], keep order:false, stats:pseudo
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p4 range:(2,+inf], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p5 range:(2,+inf], keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:TableRangeScan_17
└─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:max range:(2,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 3 order by a;
a
4
5
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a > 3;
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_11 3333.33 root data:TableRangeScan_10
│ └─TableRangeScan_10 3333.33 cop[tikv] table:t1, partition:p4 range:(3,+inf], keep order:false, stats:pseudo
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p5 range:(3,+inf], keep order:false, stats:pseudo
└─TableReader_15 3333.33 root data:TableRangeScan_14
└─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:max range:(3,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 4 order by a;
a
5
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a > 4;
id estRows task access object operator info
PartitionUnion_8 6666.67 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p5 range:(4,+inf], keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:max range:(4,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 5 order by a;
a
6
7
8
EXPLAIN SELECT * FROM t1 WHERE a > 5;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:(5,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 6 order by a;
a
7
8
EXPLAIN SELECT * FROM t1 WHERE a > 6;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:(6,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 7 order by a;
a
8
EXPLAIN SELECT * FROM t1 WHERE a > 7;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:(7,+inf], keep order:false, stats:pseudo
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 order by a;
a
-1
0
EXPLAIN SELECT * FROM t1 WHERE a < 1;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,1), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 2 order by a;
a
-1
0
1
EXPLAIN SELECT * FROM t1 WHERE a < 2;
id estRows task access object operator info
PartitionUnion_8 4.00 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,2), keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,2), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 3 order by a;
a
-1
0
1
2
EXPLAIN SELECT * FROM t1 WHERE a < 3;
id estRows task access object operator info
PartitionUnion_9 9.00 root
├─TableReader_11 3333.33 root data:TableRangeScan_10
│ └─TableRangeScan_10 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,3), keep order:false, stats:pseudo
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,3), keep order:false, stats:pseudo
└─TableReader_15 3333.33 root data:TableRangeScan_14
└─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,3), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 4 order by a;
a
-1
0
1
2
3
EXPLAIN SELECT * FROM t1 WHERE a < 4;
id estRows task access object operator info
PartitionUnion_10 16.00 root
├─TableReader_12 3333.33 root data:TableRangeScan_11
│ └─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,4), keep order:false, stats:pseudo
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,4), keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,4), keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:TableRangeScan_17
└─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,4), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 5 order by a;
a
-1
0
1
2
3
4
EXPLAIN SELECT * FROM t1 WHERE a < 5;
id estRows task access object operator info
PartitionUnion_11 25.00 root
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,5), keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,5), keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,5), keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,5), keep order:false, stats:pseudo
└─TableReader_21 3333.33 root data:TableRangeScan_20
└─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,5), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a < 6 order by a;
a
-1
0
1
2
3
4
5
EXPLAIN SELECT * FROM t1 WHERE a < 6;
id estRows task access object operator info
PartitionUnion_12 36.00 root
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,6), keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,6), keep order:false, stats:pseudo
├─TableReader_18 3333.33 root data:TableRangeScan_17
│ └─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,6), keep order:false, stats:pseudo
├─TableReader_20 3333.33 root data:TableRangeScan_19
│ └─TableRangeScan_19 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,6), keep order:false, stats:pseudo
├─TableReader_22 3333.33 root data:TableRangeScan_21
│ └─TableRangeScan_21 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,6), keep order:false, stats:pseudo
└─TableReader_24 3333.33 root data:TableRangeScan_23
└─TableRangeScan_23 3333.33 cop[tikv] table:t1, partition:max range:[-inf,6), keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 1 order by a;
a
-1
0
1
EXPLAIN SELECT * FROM t1 WHERE a <= 1;
id estRows task access object operator info
PartitionUnion_8 2.00 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,1], keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,1], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 2 order by a;
a
-1
0
1
2
EXPLAIN SELECT * FROM t1 WHERE a <= 2;
id estRows task access object operator info
PartitionUnion_9 6.00 root
├─TableReader_11 3333.33 root data:TableRangeScan_10
│ └─TableRangeScan_10 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,2], keep order:false, stats:pseudo
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,2], keep order:false, stats:pseudo
└─TableReader_15 3333.33 root data:TableRangeScan_14
└─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,2], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 3 order by a;
a
-1
0
1
2
3
EXPLAIN SELECT * FROM t1 WHERE a <= 3;
id estRows task access object operator info
PartitionUnion_10 12.00 root
├─TableReader_12 3333.33 root data:TableRangeScan_11
│ └─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,3], keep order:false, stats:pseudo
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,3], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,3], keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:TableRangeScan_17
└─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,3], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 4 order by a;
a
-1
0
1
2
3
4
EXPLAIN SELECT * FROM t1 WHERE a <= 4;
id estRows task access object operator info
PartitionUnion_11 20.00 root
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,4], keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,4], keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,4], keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,4], keep order:false, stats:pseudo
└─TableReader_21 3333.33 root data:TableRangeScan_20
└─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,4], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 5 order by a;
a
-1
0
1
2
3
4
5
EXPLAIN SELECT * FROM t1 WHERE a <= 5;
id estRows task access object operator info
PartitionUnion_12 30.00 root
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,5], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,5], keep order:false, stats:pseudo
├─TableReader_18 3333.33 root data:TableRangeScan_17
│ └─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,5], keep order:false, stats:pseudo
├─TableReader_20 3333.33 root data:TableRangeScan_19
│ └─TableRangeScan_19 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,5], keep order:false, stats:pseudo
├─TableReader_22 3333.33 root data:TableRangeScan_21
│ └─TableRangeScan_21 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,5], keep order:false, stats:pseudo
└─TableReader_24 3333.33 root data:TableRangeScan_23
└─TableRangeScan_23 3333.33 cop[tikv] table:t1, partition:max range:[-inf,5], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a <= 6 order by a;
a
-1
0
1
2
3
4
5
6
EXPLAIN SELECT * FROM t1 WHERE a <= 6;
id estRows task access object operator info
PartitionUnion_12 36.00 root
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p0 range:[-inf,6], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p1 range:[-inf,6], keep order:false, stats:pseudo
├─TableReader_18 3333.33 root data:TableRangeScan_17
│ └─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:p2 range:[-inf,6], keep order:false, stats:pseudo
├─TableReader_20 3333.33 root data:TableRangeScan_19
│ └─TableRangeScan_19 3333.33 cop[tikv] table:t1, partition:p3 range:[-inf,6], keep order:false, stats:pseudo
├─TableReader_22 3333.33 root data:TableRangeScan_21
│ └─TableRangeScan_21 3333.33 cop[tikv] table:t1, partition:p4 range:[-inf,6], keep order:false, stats:pseudo
└─TableReader_24 3333.33 root data:TableRangeScan_23
└─TableRangeScan_23 3333.33 cop[tikv] table:t1, partition:max range:[-inf,6], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a = 1;
a
1
EXPLAIN SELECT * FROM t1 WHERE a = 1;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:p1 handle:1
SELECT * FROM t1 WHERE a = 2;
a
2
EXPLAIN SELECT * FROM t1 WHERE a = 2;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:p2 handle:2
SELECT * FROM t1 WHERE a = 3;
a
3
EXPLAIN SELECT * FROM t1 WHERE a = 3;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:p3 handle:3
SELECT * FROM t1 WHERE a = 4;
a
4
EXPLAIN SELECT * FROM t1 WHERE a = 4;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:p4 handle:4
SELECT * FROM t1 WHERE a = 5;
a
5
EXPLAIN SELECT * FROM t1 WHERE a = 5;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:max handle:5
SELECT * FROM t1 WHERE a = 6;
a
6
EXPLAIN SELECT * FROM t1 WHERE a = 6;
id estRows task access object operator info
Point_Get_6 1.00 root table:t1, partition:max handle:6
SELECT * FROM t1 WHERE a >= 1 order by a;
a
1
2
3
4
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a >= 1;
id estRows task access object operator info
PartitionUnion_11 16666.67 root
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p1 range:[1,+inf], keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:TableRangeScan_14
│ └─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:p2 range:[1,+inf], keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:TableRangeScan_16
│ └─TableRangeScan_16 3333.33 cop[tikv] table:t1, partition:p3 range:[1,+inf], keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:TableRangeScan_18
│ └─TableRangeScan_18 3333.33 cop[tikv] table:t1, partition:p4 range:[1,+inf], keep order:false, stats:pseudo
└─TableReader_21 3333.33 root data:TableRangeScan_20
└─TableRangeScan_20 3333.33 cop[tikv] table:t1, partition:max range:[1,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 2 order by a;
a
2
3
4
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a >= 2;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_12 3333.33 root data:TableRangeScan_11
│ └─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p2 range:[2,+inf], keep order:false, stats:pseudo
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p3 range:[2,+inf], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p4 range:[2,+inf], keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:TableRangeScan_17
└─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:max range:[2,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 3 order by a;
a
3
4
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a >= 3;
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_11 3333.33 root data:TableRangeScan_10
│ └─TableRangeScan_10 3333.33 cop[tikv] table:t1, partition:p3 range:[3,+inf], keep order:false, stats:pseudo
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p4 range:[3,+inf], keep order:false, stats:pseudo
└─TableReader_15 3333.33 root data:TableRangeScan_14
└─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:max range:[3,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 4 order by a;
a
4
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a >= 4;
id estRows task access object operator info
PartitionUnion_8 6666.67 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p4 range:[4,+inf], keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:max range:[4,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 5 order by a;
a
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a >= 5;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:[5,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a >= 6 order by a;
a
6
7
EXPLAIN SELECT * FROM t1 WHERE a >= 6;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:[6,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 1 order by a;
a
2
3
4
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a > 1;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_12 3333.33 root data:TableRangeScan_11
│ └─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:p2 range:(1,+inf], keep order:false, stats:pseudo
├─TableReader_14 3333.33 root data:TableRangeScan_13
│ └─TableRangeScan_13 3333.33 cop[tikv] table:t1, partition:p3 range:(1,+inf], keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:TableRangeScan_15
│ └─TableRangeScan_15 3333.33 cop[tikv] table:t1, partition:p4 range:(1,+inf], keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:TableRangeScan_17
└─TableRangeScan_17 3333.33 cop[tikv] table:t1, partition:max range:(1,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 2 order by a;
a
3
4
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a > 2;
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_11 3333.33 root data:TableRangeScan_10
│ └─TableRangeScan_10 3333.33 cop[tikv] table:t1, partition:p3 range:(2,+inf], keep order:false, stats:pseudo
├─TableReader_13 3333.33 root data:TableRangeScan_12
│ └─TableRangeScan_12 3333.33 cop[tikv] table:t1, partition:p4 range:(2,+inf], keep order:false, stats:pseudo
└─TableReader_15 3333.33 root data:TableRangeScan_14
└─TableRangeScan_14 3333.33 cop[tikv] table:t1, partition:max range:(2,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 3 order by a;
a
4
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a > 3;
id estRows task access object operator info
PartitionUnion_8 6666.67 root
├─TableReader_10 3333.33 root data:TableRangeScan_9
│ └─TableRangeScan_9 3333.33 cop[tikv] table:t1, partition:p4 range:(3,+inf], keep order:false, stats:pseudo
└─TableReader_12 3333.33 root data:TableRangeScan_11
└─TableRangeScan_11 3333.33 cop[tikv] table:t1, partition:max range:(3,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 4 order by a;
a
5
6
7
EXPLAIN SELECT * FROM t1 WHERE a > 4;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:(4,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 5 order by a;
a
6
7
EXPLAIN SELECT * FROM t1 WHERE a > 5;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:(5,+inf], keep order:false, stats:pseudo
SELECT * FROM t1 WHERE a > 6 order by a;
a
7
EXPLAIN SELECT * FROM t1 WHERE a > 6;
id estRows task access object operator info
TableReader_7 3333.33 root data:TableRangeScan_6
└─TableRangeScan_6 3333.33 cop[tikv] table:t1, partition:max range:(6,+inf], keep order:false, stats:pseudo
DROP TABLE t1;
# 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));
SET SQL_MODE = '';
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');
# test without index
ALTER TABLE t1 DROP KEY a;
DROP TABLE t1;
# 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 SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-03)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03';
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
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 SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
IndexReader_11 0.00 root index:Selection_10
└─Selection_10 0.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-03)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
id estRows task access object operator info
IndexReader_11 0.00 root index:Selection_10
└─Selection_10 0.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03';
id estRows task access object operator info
IndexReader_11 10.00 root index:Selection_10
└─Selection_10 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─IndexReader_15 3323.33 root index:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3323.33 root index:Selection_20
│ └─Selection_20 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3323.33 root index:Selection_26
└─Selection_26 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
IndexReader_11 0.00 root index:Selection_10
└─Selection_10 0.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─IndexReader_15 3333.33 root index:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_21 3333.33 root index:Selection_20
│ └─Selection_20 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
│ └─IndexFullScan_19 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_27 3333.33 root index:Selection_26
└─Selection_26 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
└─IndexFullScan_25 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─IndexReader_14 3323.33 root index:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_20 3323.33 root index:Selection_19
└─Selection_19 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
IndexReader_11 0.00 root index:Selection_10
└─Selection_10 0.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─IndexReader_16 3333.33 root index:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090402, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_22 3333.33 root index:Selection_21
│ └─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090403, index:PRIMARY(a, b) keep order:false, stats:pseudo
├─IndexReader_28 3333.33 root index:Selection_27
│ └─Selection_27 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─IndexFullScan_26 10000.00 cop[tikv] table:t1, partition:p20090404, index:PRIMARY(a, b) keep order:false, stats:pseudo
└─IndexReader_34 3333.33 root index:Selection_33
└─Selection_33 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
└─IndexFullScan_32 10000.00 cop[tikv] table:t1, partition:p20090405, index:PRIMARY(a, b) keep order:false, stats:pseudo
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 SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-03)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03';
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
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 SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
TableReader_8 0.00 root data:Selection_7
└─Selection_7 0.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-03)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
id estRows task access object operator info
TableReader_8 0.00 root data:Selection_7
└─Selection_7 0.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:59.000000)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03';
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03';
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
TableReader_8 0.00 root data:Selection_7
└─Selection_7 0.00 cop[tikv] eq(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] gt(test.t1.b, 2009-04-03 00:00:01)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
TableReader_8 0.00 root data:Selection_7
└─Selection_7 0.00 cop[tikv] eq(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] ge(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
EXPLAIN SELECT * FROM t1
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t1.b, 2009-04-02 23:59:58)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
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 SELECT * FROM t1 WHERE b < CAST('2009-04-99' AS DATETIME);
id estRows task access object operator info
PartitionUnion_11 0.00 root
├─TableReader_14 0.00 root data:Selection_13
│ └─Selection_13 0.00 cop[tikv] lt(test.t1.b, NULL)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p20090401 keep order:false, stats:pseudo
├─TableReader_17 0.00 root data:Selection_16
│ └─Selection_16 0.00 cop[tikv] lt(test.t1.b, NULL)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t1, partition:p20090402 keep order:false, stats:pseudo
├─TableReader_20 0.00 root data:Selection_19
│ └─Selection_19 0.00 cop[tikv] lt(test.t1.b, NULL)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t1, partition:p20090403 keep order:false, stats:pseudo
├─TableReader_23 0.00 root data:Selection_22
│ └─Selection_22 0.00 cop[tikv] lt(test.t1.b, NULL)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t1, partition:p20090404 keep order:false, stats:pseudo
└─TableReader_26 0.00 root data:Selection_25
└─Selection_25 0.00 cop[tikv] lt(test.t1.b, NULL)
└─TableFullScan_24 10000.00 cop[tikv] table:t1, partition:p20090405 keep order:false, stats:pseudo
DROP TABLE t1;
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;
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 select * from t3 where a=11;
id estRows task access object operator info
PartitionUnion_8 20.00 root
├─TableReader_11 10.00 root data:Selection_10
│ └─Selection_10 10.00 cop[tikv] eq(test.t3.a, 11)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t3, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 10.00 root data:Selection_13
└─Selection_13 10.00 cop[tikv] eq(test.t3.a, 11)
└─TableFullScan_12 10000.00 cop[tikv] table:t3, partition:p1 keep order:false, stats:pseudo
explain select * from t3 where a=10;
id estRows task access object operator info
PartitionUnion_8 20.00 root
├─TableReader_11 10.00 root data:Selection_10
│ └─Selection_10 10.00 cop[tikv] eq(test.t3.a, 10)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t3, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 10.00 root data:Selection_13
└─Selection_13 10.00 cop[tikv] eq(test.t3.a, 10)
└─TableFullScan_12 10000.00 cop[tikv] table:t3, partition:p1 keep order:false, stats:pseudo
explain select * from t3 where a=20;
id estRows task access object operator info
PartitionUnion_8 20.00 root
├─TableReader_11 10.00 root data:Selection_10
│ └─Selection_10 10.00 cop[tikv] eq(test.t3.a, 20)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t3, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 10.00 root data:Selection_13
└─Selection_13 10.00 cop[tikv] eq(test.t3.a, 20)
└─TableFullScan_12 10000.00 cop[tikv] table:t3, partition:p1 keep order:false, stats:pseudo
explain select * from t3 where a=30;
id estRows task access object operator info
PartitionUnion_8 20.00 root
├─TableReader_11 10.00 root data:Selection_10
│ └─Selection_10 10.00 cop[tikv] eq(test.t3.a, 30)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t3, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 10.00 root data:Selection_13
└─Selection_13 10.00 cop[tikv] eq(test.t3.a, 30)
└─TableFullScan_12 10000.00 cop[tikv] table:t3, partition:p1 keep order:false, stats:pseudo
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 select * from t7 where a < 5;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] lt(test.t7.a, 5)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a < 9;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] lt(test.t7.a, 9)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a <= 9;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] le(test.t7.a, 9)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a = 9;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t7.a, 9)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a >= 9;
id estRows task access object operator info
PartitionUnion_11 16666.67 root
├─TableReader_14 3333.33 root data:Selection_13
│ └─Selection_13 3333.33 cop[tikv] ge(test.t7.a, 9)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:Selection_16
│ └─Selection_16 3333.33 cop[tikv] ge(test.t7.a, 9)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3333.33 root data:Selection_19
│ └─Selection_19 3333.33 cop[tikv] ge(test.t7.a, 9)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3333.33 root data:Selection_22
│ └─Selection_22 3333.33 cop[tikv] ge(test.t7.a, 9)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3333.33 root data:Selection_25
└─Selection_25 3333.33 cop[tikv] ge(test.t7.a, 9)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a > 9;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t7.a, 9)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t7.a, 9)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t7.a, 9)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t7.a, 9)
└─TableFullScan_20 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a < 10;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] lt(test.t7.a, 10)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a <= 10;
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t7.a, 10)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t7.a, 10)
└─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
explain select * from t7 where a = 10;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t7.a, 10)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
explain select * from t7 where a >= 10;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] ge(test.t7.a, 10)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t7.a, 10)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] ge(test.t7.a, 10)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] ge(test.t7.a, 10)
└─TableFullScan_20 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a > 10;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t7.a, 10)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t7.a, 10)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t7.a, 10)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t7.a, 10)
└─TableFullScan_20 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a < 89;
id estRows task access object operator info
PartitionUnion_11 16616.67 root
├─TableReader_14 3323.33 root data:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t7.a, 89)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3323.33 root data:Selection_16
│ └─Selection_16 3323.33 cop[tikv] lt(test.t7.a, 89)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3323.33 root data:Selection_19
│ └─Selection_19 3323.33 cop[tikv] lt(test.t7.a, 89)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3323.33 root data:Selection_22
│ └─Selection_22 3323.33 cop[tikv] lt(test.t7.a, 89)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3323.33 root data:Selection_25
└─Selection_25 3323.33 cop[tikv] lt(test.t7.a, 89)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a <= 89;
id estRows task access object operator info
PartitionUnion_11 16616.67 root
├─TableReader_14 3323.33 root data:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t7.a, 89)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3323.33 root data:Selection_16
│ └─Selection_16 3323.33 cop[tikv] le(test.t7.a, 89)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3323.33 root data:Selection_19
│ └─Selection_19 3323.33 cop[tikv] le(test.t7.a, 89)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3323.33 root data:Selection_22
│ └─Selection_22 3323.33 cop[tikv] le(test.t7.a, 89)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3323.33 root data:Selection_25
└─Selection_25 3323.33 cop[tikv] le(test.t7.a, 89)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a = 89;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t7.a, 89)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a > 89;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a >= 89;
id estRows task access object operator info
TableReader_8 3333.33 root data:Selection_7
└─Selection_7 3333.33 cop[tikv] ge(test.t7.a, 89)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a < 90;
id estRows task access object operator info
PartitionUnion_11 16616.67 root
├─TableReader_14 3323.33 root data:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t7.a, 90)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3323.33 root data:Selection_16
│ └─Selection_16 3323.33 cop[tikv] lt(test.t7.a, 90)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3323.33 root data:Selection_19
│ └─Selection_19 3323.33 cop[tikv] lt(test.t7.a, 90)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3323.33 root data:Selection_22
│ └─Selection_22 3323.33 cop[tikv] lt(test.t7.a, 90)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3323.33 root data:Selection_25
└─Selection_25 3323.33 cop[tikv] lt(test.t7.a, 90)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a <= 90;
id estRows task access object operator info
PartitionUnion_11 16616.67 root
├─TableReader_14 3323.33 root data:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t7.a, 90)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3323.33 root data:Selection_16
│ └─Selection_16 3323.33 cop[tikv] le(test.t7.a, 90)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3323.33 root data:Selection_19
│ └─Selection_19 3323.33 cop[tikv] le(test.t7.a, 90)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3323.33 root data:Selection_22
│ └─Selection_22 3323.33 cop[tikv] le(test.t7.a, 90)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3323.33 root data:Selection_25
└─Selection_25 3323.33 cop[tikv] le(test.t7.a, 90)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a = 90;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a > 90;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a >= 90;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a > 91;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a > 11 and a < 29;
id estRows task access object operator info
TableReader_8 250.00 root data:Selection_7
└─Selection_7 250.00 cop[tikv] gt(test.t7.a, 11), lt(test.t7.a, 29)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
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 select * from t7 where a < 5;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] lt(test.t7.a, 5)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a < 9;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] lt(test.t7.a, 9)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a <= 9;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] le(test.t7.a, 9)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a = 9;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t7.a, 9)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a >= 9;
id estRows task access object operator info
PartitionUnion_11 16666.67 root
├─TableReader_14 3333.33 root data:Selection_13
│ └─Selection_13 3333.33 cop[tikv] ge(test.t7.a, 9)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3333.33 root data:Selection_16
│ └─Selection_16 3333.33 cop[tikv] ge(test.t7.a, 9)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3333.33 root data:Selection_19
│ └─Selection_19 3333.33 cop[tikv] ge(test.t7.a, 9)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3333.33 root data:Selection_22
│ └─Selection_22 3333.33 cop[tikv] ge(test.t7.a, 9)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3333.33 root data:Selection_25
└─Selection_25 3333.33 cop[tikv] ge(test.t7.a, 9)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a > 9;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t7.a, 9)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t7.a, 9)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t7.a, 9)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t7.a, 9)
└─TableFullScan_20 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a < 10;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] lt(test.t7.a, 10)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
explain select * from t7 where a <= 10;
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t7.a, 10)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t7.a, 10)
└─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
explain select * from t7 where a = 10;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t7.a, 10)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
explain select * from t7 where a >= 10;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] ge(test.t7.a, 10)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] ge(test.t7.a, 10)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] ge(test.t7.a, 10)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] ge(test.t7.a, 10)
└─TableFullScan_20 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a > 10;
id estRows task access object operator info
PartitionUnion_10 13333.33 root
├─TableReader_13 3333.33 root data:Selection_12
│ └─Selection_12 3333.33 cop[tikv] gt(test.t7.a, 10)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_16 3333.33 root data:Selection_15
│ └─Selection_15 3333.33 cop[tikv] gt(test.t7.a, 10)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_19 3333.33 root data:Selection_18
│ └─Selection_18 3333.33 cop[tikv] gt(test.t7.a, 10)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_22 3333.33 root data:Selection_21
└─Selection_21 3333.33 cop[tikv] gt(test.t7.a, 10)
└─TableFullScan_20 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a < 89;
id estRows task access object operator info
PartitionUnion_11 16616.67 root
├─TableReader_14 3323.33 root data:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t7.a, 89)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3323.33 root data:Selection_16
│ └─Selection_16 3323.33 cop[tikv] lt(test.t7.a, 89)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3323.33 root data:Selection_19
│ └─Selection_19 3323.33 cop[tikv] lt(test.t7.a, 89)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3323.33 root data:Selection_22
│ └─Selection_22 3323.33 cop[tikv] lt(test.t7.a, 89)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3323.33 root data:Selection_25
└─Selection_25 3323.33 cop[tikv] lt(test.t7.a, 89)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a <= 89;
id estRows task access object operator info
PartitionUnion_11 16616.67 root
├─TableReader_14 3323.33 root data:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t7.a, 89)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3323.33 root data:Selection_16
│ └─Selection_16 3323.33 cop[tikv] le(test.t7.a, 89)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3323.33 root data:Selection_19
│ └─Selection_19 3323.33 cop[tikv] le(test.t7.a, 89)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3323.33 root data:Selection_22
│ └─Selection_22 3323.33 cop[tikv] le(test.t7.a, 89)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3323.33 root data:Selection_25
└─Selection_25 3323.33 cop[tikv] le(test.t7.a, 89)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a = 89;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t7.a, 89)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a > 89;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a >= 89;
id estRows task access object operator info
TableReader_8 3333.33 root data:Selection_7
└─Selection_7 3333.33 cop[tikv] ge(test.t7.a, 89)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a < 90;
id estRows task access object operator info
PartitionUnion_11 16616.67 root
├─TableReader_14 3323.33 root data:Selection_13
│ └─Selection_13 3323.33 cop[tikv] lt(test.t7.a, 90)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3323.33 root data:Selection_16
│ └─Selection_16 3323.33 cop[tikv] lt(test.t7.a, 90)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3323.33 root data:Selection_19
│ └─Selection_19 3323.33 cop[tikv] lt(test.t7.a, 90)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3323.33 root data:Selection_22
│ └─Selection_22 3323.33 cop[tikv] lt(test.t7.a, 90)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3323.33 root data:Selection_25
└─Selection_25 3323.33 cop[tikv] lt(test.t7.a, 90)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a <= 90;
id estRows task access object operator info
PartitionUnion_11 16616.67 root
├─TableReader_14 3323.33 root data:Selection_13
│ └─Selection_13 3323.33 cop[tikv] le(test.t7.a, 90)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t7, partition:p10 keep order:false, stats:pseudo
├─TableReader_17 3323.33 root data:Selection_16
│ └─Selection_16 3323.33 cop[tikv] le(test.t7.a, 90)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
├─TableReader_20 3323.33 root data:Selection_19
│ └─Selection_19 3323.33 cop[tikv] le(test.t7.a, 90)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t7, partition:p50 keep order:false, stats:pseudo
├─TableReader_23 3323.33 root data:Selection_22
│ └─Selection_22 3323.33 cop[tikv] le(test.t7.a, 90)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t7, partition:p70 keep order:false, stats:pseudo
└─TableReader_26 3323.33 root data:Selection_25
└─Selection_25 3323.33 cop[tikv] le(test.t7.a, 90)
└─TableFullScan_24 10000.00 cop[tikv] table:t7, partition:p90 keep order:false, stats:pseudo
explain select * from t7 where a = 90;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a > 90;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a >= 90;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a > 91;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t7 where a > 11 and a < 29;
id estRows task access object operator info
TableReader_8 250.00 root data:Selection_7
└─Selection_7 250.00 cop[tikv] gt(test.t7.a, 11), lt(test.t7.a, 29)
└─TableFullScan_6 10000.00 cop[tikv] table:t7, partition:p30 keep order:false, stats:pseudo
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 select * from t8 where a < '1980-02-02';
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t8.a, 1980-02-02 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t8, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t8.a, 1980-02-02 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t8, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t8.a, 1980-02-02 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t8, partition:p2 keep order:false, stats:pseudo
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 select * from t9 where a < '2004-12-19';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t9.a, 2004-12-19 00:00:00.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t9, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t9.a, 2004-12-19 00:00:00.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t9, partition:p1 keep order:false, stats:pseudo
explain select * from t9 where a <= '2004-12-19';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t9.a, 2004-12-19 00:00:00.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t9, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t9.a, 2004-12-19 00:00:00.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t9, partition:p1 keep order:false, stats:pseudo
drop table t7,t8,t9;
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 select * from t1 where a1 > 3;
id estRows task access object operator info
PartitionUnion_8 6666.67 root
├─TableReader_11 3333.33 root data:Selection_10
│ └─Selection_10 3333.33 cop[tikv] gt(test.t1.a1, 3)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
└─TableReader_14 3333.33 root data:Selection_13
└─Selection_13 3333.33 cop[tikv] gt(test.t1.a1, 3)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
explain select * from t1 where a1 >= 3;
id estRows task access object operator info
PartitionUnion_8 6666.67 root
├─TableReader_11 3333.33 root data:Selection_10
│ └─Selection_10 3333.33 cop[tikv] ge(test.t1.a1, 3)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
└─TableReader_14 3333.33 root data:Selection_13
└─Selection_13 3333.33 cop[tikv] ge(test.t1.a1, 3)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
explain select * from t1 where a1 < 3 and a1 > 3;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
drop table t1;
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;
drop table t2;
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 select * from t2;
id estRows task access object operator info
PartitionUnion_10 50000.00 root
├─TableReader_12 10000.00 root data:TableFullScan_11
│ └─TableFullScan_11 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_14 10000.00 root data:TableFullScan_13
│ └─TableFullScan_13 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─TableReader_16 10000.00 root data:TableFullScan_15
│ └─TableFullScan_15 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─TableReader_18 10000.00 root data:TableFullScan_17
│ └─TableFullScan_17 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─TableReader_20 10000.00 root data:TableFullScan_19
└─TableFullScan_19 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where a < 801 and a > 200;
id estRows task access object operator info
PartitionUnion_10 1000.00 root
├─TableReader_13 250.00 root data:Selection_12
│ └─Selection_12 250.00 cop[tikv] gt(test.t2.a, 200), lt(test.t2.a, 801)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─TableReader_16 250.00 root data:Selection_15
│ └─Selection_15 250.00 cop[tikv] gt(test.t2.a, 200), lt(test.t2.a, 801)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─TableReader_19 250.00 root data:Selection_18
│ └─Selection_18 250.00 cop[tikv] gt(test.t2.a, 200), lt(test.t2.a, 801)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─TableReader_22 250.00 root data:Selection_21
└─Selection_21 250.00 cop[tikv] gt(test.t2.a, 200), lt(test.t2.a, 801)
└─TableFullScan_20 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where a < 801 and a > 800;
id estRows task access object operator info
TableReader_8 0.00 root data:Selection_7
└─Selection_7 0.00 cop[tikv] gt(test.t2.a, 800), lt(test.t2.a, 801)
└─TableFullScan_6 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where a > 600;
id estRows task access object operator info
PartitionUnion_8 6666.67 root
├─TableReader_11 3333.33 root data:Selection_10
│ └─Selection_10 3333.33 cop[tikv] gt(test.t2.a, 600)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─TableReader_14 3333.33 root data:Selection_13
└─Selection_13 3333.33 cop[tikv] gt(test.t2.a, 600)
└─TableFullScan_12 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where a > 600 and b = 1;
id estRows task access object operator info
PartitionUnion_8 6.67 root
├─TableReader_11 3.33 root data:Selection_10
│ └─Selection_10 3.33 cop[tikv] eq(test.t2.b, 1), gt(test.t2.a, 600)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─TableReader_14 3.33 root data:Selection_13
└─Selection_13 3.33 cop[tikv] eq(test.t2.b, 1), gt(test.t2.a, 600)
└─TableFullScan_12 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where a > 600 and b = 4;
id estRows task access object operator info
PartitionUnion_8 6.67 root
├─TableReader_11 3.33 root data:Selection_10
│ └─Selection_10 3.33 cop[tikv] eq(test.t2.b, 4), gt(test.t2.a, 600)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─TableReader_14 3.33 root data:Selection_13
└─Selection_13 3.33 cop[tikv] eq(test.t2.b, 4), gt(test.t2.a, 600)
└─TableFullScan_12 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where a > 600 and b = 5;
id estRows task access object operator info
PartitionUnion_8 6.67 root
├─TableReader_11 3.33 root data:Selection_10
│ └─Selection_10 3.33 cop[tikv] eq(test.t2.b, 5), gt(test.t2.a, 600)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─TableReader_14 3.33 root data:Selection_13
└─Selection_13 3.33 cop[tikv] eq(test.t2.b, 5), gt(test.t2.a, 600)
└─TableFullScan_12 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where b = 5;
id estRows task access object operator info
PartitionUnion_11 50.00 root
├─TableReader_14 10.00 root data:Selection_13
│ └─Selection_13 10.00 cop[tikv] eq(test.t2.b, 5)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_17 10.00 root data:Selection_16
│ └─Selection_16 10.00 cop[tikv] eq(test.t2.b, 5)
│ └─TableFullScan_15 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─TableReader_20 10.00 root data:Selection_19
│ └─Selection_19 10.00 cop[tikv] eq(test.t2.b, 5)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─TableReader_23 10.00 root data:Selection_22
│ └─Selection_22 10.00 cop[tikv] eq(test.t2.b, 5)
│ └─TableFullScan_21 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─TableReader_26 10.00 root data:Selection_25
└─Selection_25 10.00 cop[tikv] eq(test.t2.b, 5)
└─TableFullScan_24 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
flush status;
update t2 set b = 100 where b = 6;
show status like 'Handler_read_rnd_next';
Variable_name Value
flush status;
update t2 set a = 1002 where a = 1001;
show status like 'Handler_read_rnd_next';
Variable_name Value
flush status;
update t2 set b = 6 where a = 600;
show status like 'Handler_read_rnd_next';
Variable_name Value
flush status;
update t2 set b = 6 where a > 600 and a < 800;
show status like 'Handler_read_rnd_next';
Variable_name Value
flush status;
delete from t2 where a > 600;
show status like 'Handler_read_rnd_next';
Variable_name Value
drop table t2;
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 select * from t2;
id estRows task access object operator info
PartitionUnion_10 50000.00 root
├─TableReader_12 10000.00 root data:TableFullScan_11
│ └─TableFullScan_11 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_14 10000.00 root data:TableFullScan_13
│ └─TableFullScan_13 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─TableReader_16 10000.00 root data:TableFullScan_15
│ └─TableFullScan_15 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─TableReader_18 10000.00 root data:TableFullScan_17
│ └─TableFullScan_17 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─TableReader_20 10000.00 root data:TableFullScan_19
└─TableFullScan_19 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where a = 101;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t2.a, 101)
└─TableFullScan_6 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
explain select * from t2 where a = 550;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t2.a, 550)
└─TableFullScan_6 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
explain select * from t2 where a = 833;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t2.a, 833)
└─TableFullScan_6 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where a in (10,20,30);
id estRows task access object operator info
TableReader_8 30.00 root data:Selection_7
└─Selection_7 30.00 cop[tikv] in(test.t2.a, 10, 20, 30)
└─TableFullScan_6 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
explain select * from t2 where (a = 100 OR a = 900);
id estRows task access object operator info
PartitionUnion_8 40.00 root
├─TableReader_11 20.00 root data:Selection_10
│ └─Selection_10 20.00 cop[tikv] or(eq(test.t2.a, 100), eq(test.t2.a, 900))
│ └─TableFullScan_9 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 20.00 root data:Selection_13
└─Selection_13 20.00 cop[tikv] or(eq(test.t2.a, 100), eq(test.t2.a, 900))
└─TableFullScan_12 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where (a > 100 AND a < 600);
id estRows task access object operator info
PartitionUnion_9 750.00 root
├─TableReader_12 250.00 root data:Selection_11
│ └─Selection_11 250.00 cop[tikv] gt(test.t2.a, 100), lt(test.t2.a, 600)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 250.00 root data:Selection_14
│ └─Selection_14 250.00 cop[tikv] gt(test.t2.a, 100), lt(test.t2.a, 600)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 250.00 root data:Selection_17
└─Selection_17 250.00 cop[tikv] gt(test.t2.a, 100), lt(test.t2.a, 600)
└─TableFullScan_16 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
explain select * from t2 where b = 4;
id estRows task access object operator info
PartitionUnion_11 50.00 root
├─IndexLookUp_17 10.00 root
│ ├─IndexRangeScan_15(Build) 10.00 cop[tikv] table:t2, partition:p0, index:b(b) range:[4,4], keep order:false, stats:pseudo
│ └─TableRowIDScan_16(Probe) 10.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─IndexLookUp_23 10.00 root
│ ├─IndexRangeScan_21(Build) 10.00 cop[tikv] table:t2, partition:p1, index:b(b) range:[4,4], keep order:false, stats:pseudo
│ └─TableRowIDScan_22(Probe) 10.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─IndexLookUp_29 10.00 root
│ ├─IndexRangeScan_27(Build) 10.00 cop[tikv] table:t2, partition:p2, index:b(b) range:[4,4], keep order:false, stats:pseudo
│ └─TableRowIDScan_28(Probe) 10.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─IndexLookUp_35 10.00 root
│ ├─IndexRangeScan_33(Build) 10.00 cop[tikv] table:t2, partition:p3, index:b(b) range:[4,4], keep order:false, stats:pseudo
│ └─TableRowIDScan_34(Probe) 10.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─IndexLookUp_41 10.00 root
├─IndexRangeScan_39(Build) 10.00 cop[tikv] table:t2, partition:p4, index:b(b) range:[4,4], keep order:false, stats:pseudo
└─TableRowIDScan_40(Probe) 10.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where b = 6;
id estRows task access object operator info
PartitionUnion_11 50.00 root
├─IndexLookUp_17 10.00 root
│ ├─IndexRangeScan_15(Build) 10.00 cop[tikv] table:t2, partition:p0, index:b(b) range:[6,6], keep order:false, stats:pseudo
│ └─TableRowIDScan_16(Probe) 10.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─IndexLookUp_23 10.00 root
│ ├─IndexRangeScan_21(Build) 10.00 cop[tikv] table:t2, partition:p1, index:b(b) range:[6,6], keep order:false, stats:pseudo
│ └─TableRowIDScan_22(Probe) 10.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─IndexLookUp_29 10.00 root
│ ├─IndexRangeScan_27(Build) 10.00 cop[tikv] table:t2, partition:p2, index:b(b) range:[6,6], keep order:false, stats:pseudo
│ └─TableRowIDScan_28(Probe) 10.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─IndexLookUp_35 10.00 root
│ ├─IndexRangeScan_33(Build) 10.00 cop[tikv] table:t2, partition:p3, index:b(b) range:[6,6], keep order:false, stats:pseudo
│ └─TableRowIDScan_34(Probe) 10.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─IndexLookUp_41 10.00 root
├─IndexRangeScan_39(Build) 10.00 cop[tikv] table:t2, partition:p4, index:b(b) range:[6,6], keep order:false, stats:pseudo
└─TableRowIDScan_40(Probe) 10.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where b in (1,3,5);
id estRows task access object operator info
PartitionUnion_11 150.00 root
├─IndexLookUp_17 30.00 root
│ ├─IndexRangeScan_15(Build) 30.00 cop[tikv] table:t2, partition:p0, index:b(b) range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo
│ └─TableRowIDScan_16(Probe) 30.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─IndexLookUp_23 30.00 root
│ ├─IndexRangeScan_21(Build) 30.00 cop[tikv] table:t2, partition:p1, index:b(b) range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo
│ └─TableRowIDScan_22(Probe) 30.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─IndexLookUp_29 30.00 root
│ ├─IndexRangeScan_27(Build) 30.00 cop[tikv] table:t2, partition:p2, index:b(b) range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo
│ └─TableRowIDScan_28(Probe) 30.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─IndexLookUp_35 30.00 root
│ ├─IndexRangeScan_33(Build) 30.00 cop[tikv] table:t2, partition:p3, index:b(b) range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo
│ └─TableRowIDScan_34(Probe) 30.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─IndexLookUp_41 30.00 root
├─IndexRangeScan_39(Build) 30.00 cop[tikv] table:t2, partition:p4, index:b(b) range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo
└─TableRowIDScan_40(Probe) 30.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where b in (2,4,6);
id estRows task access object operator info
PartitionUnion_11 150.00 root
├─IndexLookUp_17 30.00 root
│ ├─IndexRangeScan_15(Build) 30.00 cop[tikv] table:t2, partition:p0, index:b(b) range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo
│ └─TableRowIDScan_16(Probe) 30.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─IndexLookUp_23 30.00 root
│ ├─IndexRangeScan_21(Build) 30.00 cop[tikv] table:t2, partition:p1, index:b(b) range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo
│ └─TableRowIDScan_22(Probe) 30.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─IndexLookUp_29 30.00 root
│ ├─IndexRangeScan_27(Build) 30.00 cop[tikv] table:t2, partition:p2, index:b(b) range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo
│ └─TableRowIDScan_28(Probe) 30.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─IndexLookUp_35 30.00 root
│ ├─IndexRangeScan_33(Build) 30.00 cop[tikv] table:t2, partition:p3, index:b(b) range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo
│ └─TableRowIDScan_34(Probe) 30.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─IndexLookUp_41 30.00 root
├─IndexRangeScan_39(Build) 30.00 cop[tikv] table:t2, partition:p4, index:b(b) range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo
└─TableRowIDScan_40(Probe) 30.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where b in (7,8,9);
id estRows task access object operator info
PartitionUnion_11 150.00 root
├─IndexLookUp_17 30.00 root
│ ├─IndexRangeScan_15(Build) 30.00 cop[tikv] table:t2, partition:p0, index:b(b) range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo
│ └─TableRowIDScan_16(Probe) 30.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─IndexLookUp_23 30.00 root
│ ├─IndexRangeScan_21(Build) 30.00 cop[tikv] table:t2, partition:p1, index:b(b) range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo
│ └─TableRowIDScan_22(Probe) 30.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─IndexLookUp_29 30.00 root
│ ├─IndexRangeScan_27(Build) 30.00 cop[tikv] table:t2, partition:p2, index:b(b) range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo
│ └─TableRowIDScan_28(Probe) 30.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─IndexLookUp_35 30.00 root
│ ├─IndexRangeScan_33(Build) 30.00 cop[tikv] table:t2, partition:p3, index:b(b) range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo
│ └─TableRowIDScan_34(Probe) 30.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─IndexLookUp_41 30.00 root
├─IndexRangeScan_39(Build) 30.00 cop[tikv] table:t2, partition:p4, index:b(b) range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo
└─TableRowIDScan_40(Probe) 30.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where b > 5;
id estRows task access object operator info
PartitionUnion_11 16666.67 root
├─TableReader_14 3333.33 root data:Selection_13
│ └─Selection_13 3333.33 cop[tikv] gt(test.t2.b, 5)
│ └─TableFullScan_12 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_20 3333.33 root data:Selection_19
│ └─Selection_19 3333.33 cop[tikv] gt(test.t2.b, 5)
│ └─TableFullScan_18 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─TableReader_26 3333.33 root data:Selection_25
│ └─Selection_25 3333.33 cop[tikv] gt(test.t2.b, 5)
│ └─TableFullScan_24 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─TableReader_32 3333.33 root data:Selection_31
│ └─Selection_31 3333.33 cop[tikv] gt(test.t2.b, 5)
│ └─TableFullScan_30 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─TableReader_38 3333.33 root data:Selection_37
└─Selection_37 3333.33 cop[tikv] gt(test.t2.b, 5)
└─TableFullScan_36 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where b > 5 and b < 8;
id estRows task access object operator info
PartitionUnion_11 1250.00 root
├─IndexLookUp_17 250.00 root
│ ├─IndexRangeScan_15(Build) 250.00 cop[tikv] table:t2, partition:p0, index:b(b) range:(5,8), keep order:false, stats:pseudo
│ └─TableRowIDScan_16(Probe) 250.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─IndexLookUp_23 250.00 root
│ ├─IndexRangeScan_21(Build) 250.00 cop[tikv] table:t2, partition:p1, index:b(b) range:(5,8), keep order:false, stats:pseudo
│ └─TableRowIDScan_22(Probe) 250.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─IndexLookUp_29 250.00 root
│ ├─IndexRangeScan_27(Build) 250.00 cop[tikv] table:t2, partition:p2, index:b(b) range:(5,8), keep order:false, stats:pseudo
│ └─TableRowIDScan_28(Probe) 250.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─IndexLookUp_35 250.00 root
│ ├─IndexRangeScan_33(Build) 250.00 cop[tikv] table:t2, partition:p3, index:b(b) range:(5,8), keep order:false, stats:pseudo
│ └─TableRowIDScan_34(Probe) 250.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─IndexLookUp_41 250.00 root
├─IndexRangeScan_39(Build) 250.00 cop[tikv] table:t2, partition:p4, index:b(b) range:(5,8), keep order:false, stats:pseudo
└─TableRowIDScan_40(Probe) 250.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where b > 5 and b < 7;
id estRows task access object operator info
PartitionUnion_11 1250.00 root
├─IndexLookUp_17 250.00 root
│ ├─IndexRangeScan_15(Build) 250.00 cop[tikv] table:t2, partition:p0, index:b(b) range:(5,7), keep order:false, stats:pseudo
│ └─TableRowIDScan_16(Probe) 250.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─IndexLookUp_23 250.00 root
│ ├─IndexRangeScan_21(Build) 250.00 cop[tikv] table:t2, partition:p1, index:b(b) range:(5,7), keep order:false, stats:pseudo
│ └─TableRowIDScan_22(Probe) 250.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─IndexLookUp_29 250.00 root
│ ├─IndexRangeScan_27(Build) 250.00 cop[tikv] table:t2, partition:p2, index:b(b) range:(5,7), keep order:false, stats:pseudo
│ └─TableRowIDScan_28(Probe) 250.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─IndexLookUp_35 250.00 root
│ ├─IndexRangeScan_33(Build) 250.00 cop[tikv] table:t2, partition:p3, index:b(b) range:(5,7), keep order:false, stats:pseudo
│ └─TableRowIDScan_34(Probe) 250.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─IndexLookUp_41 250.00 root
├─IndexRangeScan_39(Build) 250.00 cop[tikv] table:t2, partition:p4, index:b(b) range:(5,7), keep order:false, stats:pseudo
└─TableRowIDScan_40(Probe) 250.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
explain select * from t2 where b > 0 and b < 5;
id estRows task access object operator info
PartitionUnion_11 1250.00 root
├─IndexLookUp_17 250.00 root
│ ├─IndexRangeScan_15(Build) 250.00 cop[tikv] table:t2, partition:p0, index:b(b) range:(0,5), keep order:false, stats:pseudo
│ └─TableRowIDScan_16(Probe) 250.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─IndexLookUp_23 250.00 root
│ ├─IndexRangeScan_21(Build) 250.00 cop[tikv] table:t2, partition:p1, index:b(b) range:(0,5), keep order:false, stats:pseudo
│ └─TableRowIDScan_22(Probe) 250.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
├─IndexLookUp_29 250.00 root
│ ├─IndexRangeScan_27(Build) 250.00 cop[tikv] table:t2, partition:p2, index:b(b) range:(0,5), keep order:false, stats:pseudo
│ └─TableRowIDScan_28(Probe) 250.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
├─IndexLookUp_35 250.00 root
│ ├─IndexRangeScan_33(Build) 250.00 cop[tikv] table:t2, partition:p3, index:b(b) range:(0,5), keep order:false, stats:pseudo
│ └─TableRowIDScan_34(Probe) 250.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo
└─IndexLookUp_41 250.00 root
├─IndexRangeScan_39(Build) 250.00 cop[tikv] table:t2, partition:p4, index:b(b) range:(0,5), keep order:false, stats:pseudo
└─TableRowIDScan_40(Probe) 250.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo
flush status;
update t2 set a = 111 where b = 10;
show status like 'Handler_read_rnd_next';
Variable_name Value
show status like 'Handler_read_key';
Variable_name Value
flush status;
update t2 set a = 111 where b in (5,6);
show status like 'Handler_read_rnd_next';
Variable_name Value
show status like 'Handler_read_key';
Variable_name Value
flush status;
update t2 set a = 222 where b = 7;
show status like 'Handler_read_rnd_next';
Variable_name Value
show status like 'Handler_read_key';
Variable_name Value
flush status;
delete from t2 where b = 7;
show status like 'Handler_read_rnd_next';
Variable_name Value
show status like 'Handler_read_key';
Variable_name Value
flush status;
delete from t2 where b > 5;
show status like 'Handler_read_rnd_next';
Variable_name Value
show status like 'Handler_read_key';
Variable_name Value
show status like 'Handler_read_prev';
Variable_name Value
show status like 'Handler_read_next';
Variable_name Value
flush status;
delete from t2 where b < 5 or b > 3;
show status like 'Handler_read_rnd_next';
Variable_name Value
show status like 'Handler_read_key';
Variable_name Value
show status like 'Handler_read_prev';
Variable_name Value
show status like 'Handler_read_next';
Variable_name Value
drop table t1, t2;
create table t1 (s1 int);
explain select 1 from t1 union all select 2;
id estRows task access object operator info
Union_8 10001.00 root
├─Projection_9 10000.00 root 1->Column#5
│ └─TableReader_11 10000.00 root data:TableFullScan_10
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo
└─Projection_12 1.00 root 2->Column#5
└─TableDual_13 1.00 root rows:1
drop table t1;
create table t1 (a int)
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)
);
insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
explain select * from t1 where a=0;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.a, 0)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo
explain select * from t2 where a=0;
id estRows task access object operator info
PartitionUnion_9 30.00 root
├─TableReader_12 10.00 root data:Selection_11
│ └─Selection_11 10.00 cop[tikv] eq(test.t2.a, 0)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 10.00 root data:Selection_14
│ └─Selection_14 10.00 cop[tikv] eq(test.t2.a, 0)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 10.00 root data:Selection_17
└─Selection_17 10.00 cop[tikv] eq(test.t2.a, 0)
└─TableFullScan_16 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
explain select * from t1 where a=0xFE;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t1.a, 254)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
explain select * from t2 where a=0xFE;
id estRows task access object operator info
PartitionUnion_9 30.00 root
├─TableReader_12 10.00 root data:Selection_11
│ └─Selection_11 10.00 cop[tikv] eq(test.t2.a, 254)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 10.00 root data:Selection_14
│ └─Selection_14 10.00 cop[tikv] eq(test.t2.a, 254)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 10.00 root data:Selection_17
└─Selection_17 10.00 cop[tikv] eq(test.t2.a, 254)
└─TableFullScan_16 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
explain select * from t1 where a > 0xFE AND a <= 0xFF;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t2 where a > 0xFE AND a <= 0xFF;
id estRows task access object operator info
PartitionUnion_9 750.00 root
├─TableReader_12 250.00 root data:Selection_11
│ └─Selection_11 250.00 cop[tikv] gt(test.t2.a, 254), le(test.t2.a, 255)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 250.00 root data:Selection_14
│ └─Selection_14 250.00 cop[tikv] gt(test.t2.a, 254), le(test.t2.a, 255)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 250.00 root data:Selection_17
└─Selection_17 250.00 cop[tikv] gt(test.t2.a, 254), le(test.t2.a, 255)
└─TableFullScan_16 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
explain select * from t1 where a >= 0xFE AND a <= 0xFF;
id estRows task access object operator info
TableReader_8 250.00 root data:Selection_7
└─Selection_7 250.00 cop[tikv] ge(test.t1.a, 254), le(test.t1.a, 255)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
explain select * from t2 where a >= 0xFE AND a <= 0xFF;
id estRows task access object operator info
PartitionUnion_9 750.00 root
├─TableReader_12 250.00 root data:Selection_11
│ └─Selection_11 250.00 cop[tikv] ge(test.t2.a, 254), le(test.t2.a, 255)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 250.00 root data:Selection_14
│ └─Selection_14 250.00 cop[tikv] ge(test.t2.a, 254), le(test.t2.a, 255)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 250.00 root data:Selection_17
└─Selection_17 250.00 cop[tikv] ge(test.t2.a, 254), le(test.t2.a, 255)
└─TableFullScan_16 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
explain select * from t1 where a < 64 AND a >= 63;
id estRows task access object operator info
TableReader_8 250.00 root data:Selection_7
└─Selection_7 250.00 cop[tikv] ge(test.t1.a, 63), lt(test.t1.a, 64)
└─TableFullScan_6 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo
explain select * from t2 where a < 64 AND a >= 63;
id estRows task access object operator info
PartitionUnion_9 750.00 root
├─TableReader_12 250.00 root data:Selection_11
│ └─Selection_11 250.00 cop[tikv] ge(test.t2.a, 63), lt(test.t2.a, 64)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 250.00 root data:Selection_14
│ └─Selection_14 250.00 cop[tikv] ge(test.t2.a, 63), lt(test.t2.a, 64)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 250.00 root data:Selection_17
└─Selection_17 250.00 cop[tikv] ge(test.t2.a, 63), lt(test.t2.a, 64)
└─TableFullScan_16 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
explain select * from t1 where a <= 64 AND a >= 63;
id estRows task access object operator info
PartitionUnion_8 500.00 root
├─TableReader_11 250.00 root data:Selection_10
│ └─Selection_10 250.00 cop[tikv] ge(test.t1.a, 63), le(test.t1.a, 64)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 250.00 root data:Selection_13
└─Selection_13 250.00 cop[tikv] ge(test.t1.a, 63), le(test.t1.a, 64)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
explain select * from t2 where a <= 64 AND a >= 63;
id estRows task access object operator info
PartitionUnion_9 750.00 root
├─TableReader_12 250.00 root data:Selection_11
│ └─Selection_11 250.00 cop[tikv] ge(test.t2.a, 63), le(test.t2.a, 64)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 250.00 root data:Selection_14
│ └─Selection_14 250.00 cop[tikv] ge(test.t2.a, 63), le(test.t2.a, 64)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 250.00 root data:Selection_17
└─Selection_17 250.00 cop[tikv] ge(test.t2.a, 63), le(test.t2.a, 64)
└─TableFullScan_16 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo
drop table t1;
drop table t2;
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 select * from t1 where
a >= 2305561538531885056-10 and a <= 2305561538531885056-8;
id estRows task access object operator info
PartitionUnion_10 1000.00 root
├─TableReader_13 250.00 root data:Selection_12
│ └─Selection_12 250.00 cop[tikv] ge(test.t1.a, 2305561538531885046), le(test.t1.a, 2305561538531885048)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
├─TableReader_16 250.00 root data:Selection_15
│ └─Selection_15 250.00 cop[tikv] ge(test.t1.a, 2305561538531885046), le(test.t1.a, 2305561538531885048)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
├─TableReader_19 250.00 root data:Selection_18
│ └─Selection_18 250.00 cop[tikv] ge(test.t1.a, 2305561538531885046), le(test.t1.a, 2305561538531885048)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo
└─TableReader_22 250.00 root data:Selection_21
└─Selection_21 250.00 cop[tikv] ge(test.t1.a, 2305561538531885046), le(test.t1.a, 2305561538531885048)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p4 keep order:false, stats:pseudo
explain select * from t1 where
a > 0xFFFFFFFFFFFFFFEC and a < 0xFFFFFFFFFFFFFFEE;
id estRows task access object operator info
PartitionUnion_10 1000.00 root
├─TableReader_13 250.00 root data:Selection_12
│ └─Selection_12 250.00 cop[tikv] gt(test.t1.a, 18446744073709551596), lt(test.t1.a, 18446744073709551598)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
├─TableReader_16 250.00 root data:Selection_15
│ └─Selection_15 250.00 cop[tikv] gt(test.t1.a, 18446744073709551596), lt(test.t1.a, 18446744073709551598)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
├─TableReader_19 250.00 root data:Selection_18
│ └─Selection_18 250.00 cop[tikv] gt(test.t1.a, 18446744073709551596), lt(test.t1.a, 18446744073709551598)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo
└─TableReader_22 250.00 root data:Selection_21
└─Selection_21 250.00 cop[tikv] gt(test.t1.a, 18446744073709551596), lt(test.t1.a, 18446744073709551598)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p4 keep order:false, stats:pseudo
explain select * from t1 where a>=0 and a <= 0xFFFFFFFFFFFFFFFF;
id estRows task access object operator info
PartitionUnion_10 13293.33 root
├─TableReader_13 3323.33 root data:Selection_12
│ └─Selection_12 3323.33 cop[tikv] le(test.t1.a, 18446744073709551615)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
├─TableReader_16 3323.33 root data:Selection_15
│ └─Selection_15 3323.33 cop[tikv] le(test.t1.a, 18446744073709551615)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
├─TableReader_19 3323.33 root data:Selection_18
│ └─Selection_18 3323.33 cop[tikv] le(test.t1.a, 18446744073709551615)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo
└─TableReader_22 3323.33 root data:Selection_21
└─Selection_21 3323.33 cop[tikv] le(test.t1.a, 18446744073709551615)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p4 keep order:false, stats:pseudo
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 select * from t1 where a>-2 and a <=0;
id estRows task access object operator info
PartitionUnion_10 1000.00 root
├─TableReader_13 250.00 root data:Selection_12
│ └─Selection_12 250.00 cop[tikv] gt(test.t1.a, -2), le(test.t1.a, 0)
│ └─TableFullScan_11 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
├─TableReader_16 250.00 root data:Selection_15
│ └─Selection_15 250.00 cop[tikv] gt(test.t1.a, -2), le(test.t1.a, 0)
│ └─TableFullScan_14 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
├─TableReader_19 250.00 root data:Selection_18
│ └─Selection_18 250.00 cop[tikv] gt(test.t1.a, -2), le(test.t1.a, 0)
│ └─TableFullScan_17 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo
└─TableReader_22 250.00 root data:Selection_21
└─Selection_21 250.00 cop[tikv] gt(test.t1.a, -2), le(test.t1.a, 0)
└─TableFullScan_20 10000.00 cop[tikv] table:t1, partition:p4 keep order:false, stats:pseudo
drop table t1;
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');
explain select * from t1 where recdate < '2007-03-08 00:00:00';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t1.recdate, 2007-03-08 00:00:00.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t1.recdate, 2007-03-08 00:00:00.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
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');
explain select * from t1 where recdate < '2006-01-01 00:00:00';
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t1.recdate, 2006-01-01 00:00:00.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t1.recdate, 2006-01-01 00:00:00.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
drop table t1;
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 select * from t1 where a between 10 and 13;
id estRows task access object operator info
PartitionUnion_9 750.00 root
├─TableReader_12 250.00 root data:Selection_11
│ └─Selection_11 250.00 cop[tikv] ge(test.t1.a, 10), le(test.t1.a, 13)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 250.00 root data:Selection_14
│ └─Selection_14 250.00 cop[tikv] ge(test.t1.a, 10), le(test.t1.a, 13)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 250.00 root data:Selection_17
└─Selection_17 250.00 cop[tikv] ge(test.t1.a, 10), le(test.t1.a, 13)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
explain select * from t1 where a between 10 and 10+33;
id estRows task access object operator info
PartitionUnion_9 750.00 root
├─TableReader_12 250.00 root data:Selection_11
│ └─Selection_11 250.00 cop[tikv] ge(test.t1.a, 10), le(test.t1.a, 43)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 250.00 root data:Selection_14
│ └─Selection_14 250.00 cop[tikv] ge(test.t1.a, 10), le(test.t1.a, 43)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 250.00 root data:Selection_17
└─Selection_17 250.00 cop[tikv] ge(test.t1.a, 10), le(test.t1.a, 43)
└─TableFullScan_16 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo
drop table t0, t1;
drop table if exists t;
create table t(a timestamp) partition by range(unix_timestamp(a)) (partition p0 values less than(unix_timestamp('2019-02-16 14:20:00')), partition p1 values less than (maxvalue));
explain select * from t where a between timestamp'2019-02-16 14:19:00' and timestamp'2019-02-16 14:21:00';
id estRows task access object operator info
PartitionUnion_8 500.00 root
├─TableReader_11 250.00 root data:Selection_10
│ └─Selection_10 250.00 cop[tikv] ge(test.t.a, 2019-02-16 14:19:00), le(test.t.a, 2019-02-16 14:21:00)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 250.00 root data:Selection_13
└─Selection_13 250.00 cop[tikv] ge(test.t.a, 2019-02-16 14:19:00), le(test.t.a, 2019-02-16 14:21:00)
└─TableFullScan_12 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
drop table if exists t;
create table t(a int) partition by range(a) (partition p0 values less than (100), partition p1 values less than (200), partition p2 values less than (300));
begin;
explain select * from t;
id estRows task access object operator info
PartitionUnion_8 30000.00 root
├─TableReader_10 10000.00 root data:TableFullScan_9
│ └─TableFullScan_9 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─TableReader_12 10000.00 root data:TableFullScan_11
│ └─TableFullScan_11 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_14 10000.00 root data:TableFullScan_13
└─TableFullScan_13 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
insert into t values(1);
explain select * from t;
id estRows task access object operator info
Projection_11 30000.00 root test.t.a
└─PartitionUnion_12 30000.00 root
├─UnionScan_13 10000.00 root
│ └─TableReader_15 10000.00 root data:TableFullScan_14
│ └─TableFullScan_14 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─UnionScan_16 10000.00 root
│ └─TableReader_18 10000.00 root data:TableFullScan_17
│ └─TableFullScan_17 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─UnionScan_19 10000.00 root
└─TableReader_21 10000.00 root data:TableFullScan_20
└─TableFullScan_20 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
rollback;
begin;
insert into t values(101);
explain select * from t;
id estRows task access object operator info
Projection_11 30000.00 root test.t.a
└─PartitionUnion_12 30000.00 root
├─UnionScan_13 10000.00 root
│ └─TableReader_15 10000.00 root data:TableFullScan_14
│ └─TableFullScan_14 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─UnionScan_16 10000.00 root
│ └─TableReader_18 10000.00 root data:TableFullScan_17
│ └─TableFullScan_17 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─UnionScan_19 10000.00 root
└─TableReader_21 10000.00 root data:TableFullScan_20
└─TableFullScan_20 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
rollback;
begin;
insert into t values(201);
explain select * from t;
id estRows task access object operator info
Projection_11 30000.00 root test.t.a
└─PartitionUnion_12 30000.00 root
├─UnionScan_13 10000.00 root
│ └─TableReader_15 10000.00 root data:TableFullScan_14
│ └─TableFullScan_14 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─UnionScan_16 10000.00 root
│ └─TableReader_18 10000.00 root data:TableFullScan_17
│ └─TableFullScan_17 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─UnionScan_19 10000.00 root
└─TableReader_21 10000.00 root data:TableFullScan_20
└─TableFullScan_20 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
rollback;
explain select * from t;
id estRows task access object operator info
PartitionUnion_8 30000.00 root
├─TableReader_10 10000.00 root data:TableFullScan_9
│ └─TableFullScan_9 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─TableReader_12 10000.00 root data:TableFullScan_11
│ └─TableFullScan_11 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_14 10000.00 root data:TableFullScan_13
└─TableFullScan_13 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
drop table if exists t;
CREATE TABLE `t` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
PARTITION BY RANGE COLUMNS(a) (
PARTITION p0 VALUES LESS THAN (1),
PARTITION p1 VALUES LESS THAN (10),
PARTITION p2 VALUES LESS THAN (100)
);
desc select * from t where a = 11 and b = 1 or a = 12 and b = 1;
id estRows task access object operator info
TableReader_8 8000.00 root data:Selection_7
└─Selection_7 8000.00 cop[tikv] or(and(eq(test.t.a, 11), eq(test.t.b, 1)), and(eq(test.t.a, 12), eq(test.t.b, 1)))
└─TableFullScan_6 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
drop table if exists t;
create table t (ts timestamp(3) not null default current_timestamp(3))
partition by range (floor(unix_timestamp(ts))) (
partition p0 values less than (unix_timestamp('2020-04-05 00:00:00')),
partition p1 values less than (unix_timestamp('2020-04-15 00:00:00')),
partition p2 values less than (unix_timestamp('2020-04-25 00:00:00'))
);
explain select * from t where ts = '2020-04-06 00:00:00' -- p1;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t.ts, 2020-04-06 00:00:00.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
explain select * from t where ts = '2020-04-05 00:00:00.001' -- p1;
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t.ts, 2020-04-05 00:00:00.001000)
└─TableFullScan_6 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
explain select * from t where ts > '2020-04-15 00:00:00' -- p2;
id estRows task access object operator info
TableReader_8 3333.33 root data:Selection_7
└─Selection_7 3333.33 cop[tikv] gt(test.t.ts, 2020-04-15 00:00:00.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts > '2020-04-14 23:59:59.999' -- p1,p2;
id estRows task access object operator info
PartitionUnion_8 6666.67 root
├─TableReader_11 3333.33 root data:Selection_10
│ └─Selection_10 3333.33 cop[tikv] gt(test.t.ts, 2020-04-14 23:59:59.999000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_14 3333.33 root data:Selection_13
└─Selection_13 3333.33 cop[tikv] gt(test.t.ts, 2020-04-14 23:59:59.999000)
└─TableFullScan_12 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts > '2020-04-15 00:00:00.001' -- p2;
id estRows task access object operator info
TableReader_8 3333.33 root data:Selection_7
└─Selection_7 3333.33 cop[tikv] gt(test.t.ts, 2020-04-15 00:00:00.001000)
└─TableFullScan_6 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts > '2020-04-26 00:00:00.001' -- dual;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t where ts >= '2020-04-04 12:22:32' -- p0,p1,p2;
id estRows task access object operator info
PartitionUnion_9 10000.00 root
├─TableReader_12 3333.33 root data:Selection_11
│ └─Selection_11 3333.33 cop[tikv] ge(test.t.ts, 2020-04-04 12:22:32.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 3333.33 root data:Selection_14
│ └─Selection_14 3333.33 cop[tikv] ge(test.t.ts, 2020-04-04 12:22:32.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 3333.33 root data:Selection_17
└─Selection_17 3333.33 cop[tikv] ge(test.t.ts, 2020-04-04 12:22:32.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts >= '2020-04-05 00:00:00' -- p1,p2;
id estRows task access object operator info
PartitionUnion_8 6666.67 root
├─TableReader_11 3333.33 root data:Selection_10
│ └─Selection_10 3333.33 cop[tikv] ge(test.t.ts, 2020-04-05 00:00:00.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_14 3333.33 root data:Selection_13
└─Selection_13 3333.33 cop[tikv] ge(test.t.ts, 2020-04-05 00:00:00.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts >= '2020-04-25 00:00:00' -- dual;
id estRows task access object operator info
TableDual_6 0.00 root rows:0
explain select * from t where ts < '2020-04-25 00:00:00' -- p0,p1,p2;
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t.ts, 2020-04-25 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t.ts, 2020-04-25 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t.ts, 2020-04-25 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts < '2020-04-15 00:00:00.001' -- p0,p1,p2;
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t.ts, 2020-04-15 00:00:00.001000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t.ts, 2020-04-15 00:00:00.001000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t.ts, 2020-04-15 00:00:00.001000)
└─TableFullScan_16 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts < '2020-04-15 00:00:00' -- expect perfect : p0,p1, obtain: p0,p1,p2;
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t.ts, 2020-04-15 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t.ts, 2020-04-15 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t.ts, 2020-04-15 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts < '2020-04-14 23:59:59.999' -- p0,p1;
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] lt(test.t.ts, 2020-04-14 23:59:59.999000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] lt(test.t.ts, 2020-04-14 23:59:59.999000)
└─TableFullScan_12 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
explain select * from t where ts < '2020-04-03 00:00:00' -- p0;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] lt(test.t.ts, 2020-04-03 00:00:00.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
explain select * from t where ts < '2021-05-03 00:00:00' -- p0,p1,p2;
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] lt(test.t.ts, 2021-05-03 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] lt(test.t.ts, 2021-05-03 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] lt(test.t.ts, 2021-05-03 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts <= '2020-04-05 00:00:00' -- p0,p1;
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t.ts, 2020-04-05 00:00:00.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t.ts, 2020-04-05 00:00:00.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
explain select * from t where ts <= '2020-04-03 00:00:00' -- p0;
id estRows task access object operator info
TableReader_8 3323.33 root data:Selection_7
└─Selection_7 3323.33 cop[tikv] le(test.t.ts, 2020-04-03 00:00:00.000000)
└─TableFullScan_6 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
explain select * from t where ts <= '2020-04-14 23:59:59.123' -- p0,p1;
id estRows task access object operator info
PartitionUnion_8 6646.67 root
├─TableReader_11 3323.33 root data:Selection_10
│ └─Selection_10 3323.33 cop[tikv] le(test.t.ts, 2020-04-14 23:59:59.123000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 3323.33 root data:Selection_13
└─Selection_13 3323.33 cop[tikv] le(test.t.ts, 2020-04-14 23:59:59.123000)
└─TableFullScan_12 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
explain select * from t where ts <= '2020-04-25 00:00:00' -- p0,p1,p2;
id estRows task access object operator info
PartitionUnion_9 9970.00 root
├─TableReader_12 3323.33 root data:Selection_11
│ └─Selection_11 3323.33 cop[tikv] le(test.t.ts, 2020-04-25 00:00:00.000000)
│ └─TableFullScan_10 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
├─TableReader_15 3323.33 root data:Selection_14
│ └─Selection_14 3323.33 cop[tikv] le(test.t.ts, 2020-04-25 00:00:00.000000)
│ └─TableFullScan_13 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
└─TableReader_18 3323.33 root data:Selection_17
└─Selection_17 3323.33 cop[tikv] le(test.t.ts, 2020-04-25 00:00:00.000000)
└─TableFullScan_16 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo
explain select * from t where ts > '2020-04-25 00:00:00' or ts < '2020-01-02 00:00:00' -- p0;
id estRows task access object operator info
TableReader_8 6656.67 root data:Selection_7
└─Selection_7 6656.67 cop[tikv] or(gt(test.t.ts, 2020-04-25 00:00:00.000000), lt(test.t.ts, 2020-01-02 00:00:00.000000))
└─TableFullScan_6 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
explain select * from t where ts > '2020-04-02 00:00:00' and ts < '2020-04-07 00:00:00' -- p0,p1;
id estRows task access object operator info
PartitionUnion_8 500.00 root
├─TableReader_11 250.00 root data:Selection_10
│ └─Selection_10 250.00 cop[tikv] gt(test.t.ts, 2020-04-02 00:00:00.000000), lt(test.t.ts, 2020-04-07 00:00:00.000000)
│ └─TableFullScan_9 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo
└─TableReader_14 250.00 root data:Selection_13
└─Selection_13 250.00 cop[tikv] gt(test.t.ts, 2020-04-02 00:00:00.000000), lt(test.t.ts, 2020-04-07 00:00:00.000000)
└─TableFullScan_12 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo
drop table if exists t;
create table t (id int, name varchar(20)) partition by hash(id) partitions 128;
explain SELECT * FROM t partition (p1) where name = '1';
id estRows task access object operator info
TableReader_8 10.00 root data:Selection_7
└─Selection_7 10.00 cop[tikv] eq(test.t.name, "1")
└─TableFullScan_6 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo