1 CREATE TABLE part_tab 2 ( c1 int default NULL, 3 c2 varchar(30) default NULL, 4 c3 date default NULL 5 ) engine=myisam 6 PARTITION BY RANGE (year(c3)) 7 ( 8 PARTITION p0 VALUES LESS THAN (1995), 9 PARTITION p1 VALUES LESS THAN (1996) , 10 PARTITION p2 VALUES LESS THAN (1997) , 11 PARTITION p3 VALUES LESS THAN (1998) , 12 PARTITION p4 VALUES LESS THAN (1999), 13 PARTITION p5 VALUES LESS THAN (2000) , 14 PARTITION p6 VALUES LESS THAN (2001) , 15 PARTITION p7 VALUES LESS THAN (2002) , 16 PARTITION p8 VALUES LESS THAN (2003) , 17 PARTITION p9 VALUES LESS THAN (2004) , 18 PARTITION p10 VALUES LESS THAN (2010), 19 PARTITION p11 VALUES LESS THAN MAXVALUE 20 ); 21 22 23 create table no_part_tab 24 (c1 int(11) default NULL, 25 c2 varchar(30) default NULL, 26 c3 date default NULL 27 ) engine=myisam; 28 29 30 delimiter // 31 CREATE PROCEDURE load_part_tab() 32 begin 33 declare v int default 0; 34 while v < 8000000 35 do 36 insert into part_tab(c1,c2,c3) 37 values (v,'testing partitions',adddate('1995-01-01',(rand(v)*36520) mod 3652)); 38 set v = v + 1; 39 end while; 40 end 41 // 42 43 delimiter ; 44 call load_part_tab(); 45 explain select count(*) from no_part_tab where 46 c3 > date '1995-01-01' and c3 < date '1995-12-31'; 47 48 explain select count(*) from part_tab where 49 c3 > date '1995-01-01' and c3 < date '1995-12-31'; 50 51 52 53 54 CREATE TABLE part_tab2 55 ( 56 c1 int default NULL 57 ) engine=myisam 58 PARTITION BY RANGE (c1) 59 ( 60 PARTITION p0 VALUES LESS THAN (5), 61 PARTITION p1 VALUES LESS THAN (10), 62 PARTITION p2 VALUES LESS THAN MAXVALUE 63 ); 64 65 insert into part_tab2 values(2),(3);