MYSQL使用心得(十一) 按日期进行表分区

创建

create table user (id int(11) NOT NULL AUTO_INCREMENT,

name varchar(255),

birthday date default NULL,

PRIMARY KEY (id,birthday))

partition by range (birthday)

(partition p0 values less than ('1985-12-26'),

partition p1 VALUES LESS THAN ('2013-12-01'));

报错

ERROR 1697 (HY000): VALUES value for partition 'p0' must have type INT

正常创建

create table user (id int(11) NOT NULL AUTO_INCREMENT,

name varchar(255),

birthday date default NULL,

PRIMARY KEY (id,birthday)) engine=innodb

partition by range (to_days(birthday))

(PARTITION p0 VALUES LESS THAN (to_days('1985-01-01')),

PARTITION p1 VALUES LESS THAN (to_days('2004- 01-01')),

PARTITION p2 VALUES LESS THAN (to_days('2005-01-01')),

PARTITION p3 VALUES LESS THAN (to_days('2006-01-01')),

PARTITION p4 VALUES LESS THAN (to_days('2007-01-01')),

PARTITION p5 VALUES LESS THAN (to_days('2010-01-01')),

PARTITION p6 VALUES LESS THAN MAXVALUE);

执行解释扫描

explain partitions select birthday from user where birthday>'2006-06-01' and birthday<'2006-12- 12'\G

输出

*************************** 1. row ***************************

          id: 1

 select_type: SIMPLE

       table: user

  partitions: p0,p4

        type: index

possible_keys: NULL

         key: PRIMARY

     key_len: 7

         ref: NULL

        rows: 2

       Extra: Using where; Using index

1 row in set (0.00 sec)

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/MySQL/

时间: 2024-10-05 12:31:10

MYSQL使用心得(十一) 按日期进行表分区的相关文章

MYSQL使用心得(四) 临时表与内存表

mysql5.5性能优化-内存表 内存表分为2种,但共同点是,重起数据库以后,内存中的数据全部丢失,内存表的功能 有部分的限制,有些属性不能像正常表一样使用,所以请大家使用的时候谨慎参照官方文档.下面只是抛砖引玉. 1.临 时表:表建在内存里,数据在内存里 2.内存表:表建在磁盘里,数据在内存里 其中包括2个重要的参数 [mysqld] # 内存表容量 max_heap_table_size=1024M # 临时表容量 tmp_table_size=1024M 建立内存表的时候,在5.5里,需要

MySQL数据库表分区注意事项总结

1.分区列索引约束 若表有primary key或unique key,则分区表的分区列必须包含在primary key或unique key列表里,这是为了确保主键的效率,否则同一主键区的东西一个在A分区,一个在B分区,显然会比较麻烦. 2.各分区类型条件 range 每个分区包含那些分区表达式的值位于一个给定的连续区间内的行.这些区间要连续且不能相互重叠 list只支持整形字段或返回整形数的表达式,每个分区列表里的值列表必须整数 hash类型只支持整形字段或返回整形数的表达式 key类型只支

MySQL的表分区

一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区.当然也可根据其他的条件分区.   二.为什么要对表进行分区 为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率. 分区的一些优点包括:       1).与单个磁盘或文件系统分区相比,可以存储更多的数据.       2).对于那些已经失去保存意义的数据,通常可以通过删除

MySQL的表分区详解_Mysql

一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区.当然也可根据其他的条件分区. 二.为什么要对表进行分区为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率.分区的一些优点包括:      1).与单个磁盘或文件系统分区相比,可以存储更多的数据.      2).对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的

深入分析mysql数据库表分区

什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区.当然也可根据其他的条件分区. 为什么要对表进行分区 为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率. 分区的一些优点包括: 1).与单个磁盘或文件系统分区相比,可以存储更多的数据. 2).对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那

我的MYSQL学习心得(十一) 视图

这一篇<我的MYSQL学习心得(十一)>将会讲解MYSQL的视图   使用视图的理由是什么? 1.安全性:一般是这样做的:创建一个视图,定义好该视图所操作的数据. 之后将用户权限与视图绑定,这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限. 2.查询性能提高 3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大,那么可以使用虚拟表的形式达到少修改的效果. 这是在实际开发中比较有用的 4.复杂的查询需求,可以进行问题分解,然后将创建多个视图获取数据.将视图联合起来就能

我的MYSQL学习心得(十一)

原文:我的MYSQL学习心得(十一) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十二)   这一篇<我的MYSQL学习心得(十一)>将会讲解MYSQL的视图   使用视图的理由是什么?

我的MYSQL学习心得(十四) 备份和恢复

原文:我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程

我的MYSQL学习心得(十六) 优化

原文:我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的