mysql partition by range_mysql 分区 按 PARTITION BY RANGE (TO_DAYS(startTime))

本文介绍了如何使用MySQL的PARTITION BY RANGE (TO_DAYS(date))对表进行分区,以`ClientActionTrack`表为例,展示了如何根据`startTime`的日期创建分区,并通过示例查询解释了不同分区的查询效率和范围。
摘要由CSDN通过智能技术生成

to_days()

Given a date date, returns a day number (the number of days since year 0).

给定一个date 日期,返回天数

Create Table: CREATE TABLE `ClientActionTrack` (

`sn` bigint(20) NOT NULL AUTO_INCREMENT,

`clientSn` int(11) DEFAULT NULL,

`ip` varchar(32) DEFAULT NULL,

`url` varchar(1000) DEFAULT NULL COMMENT 'request url',

`httpMethod` varchar(100) DEFAULT NULL COMMENT 'http method',

`requestParams` text COMMENT '请求参数',

`requestHeader` varchar(2000) DEFAULT NULL COMMENT '请求头信息',

`pageUrl` varchar(500) DEFAULT NULL COMMENT '页面Url',

`sessionId` varchar(100) DEFAULT NULL COMMENT 'session的Id',

`startTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '访问开始时间',

`completeTime` datetime DEFAULT NULL COMMENT '访问完成时间',

PRIMARY KEY (`sn`,`startTime`)

) ENGINE=InnoDB AUTO_INCREMENT=4424745 DEFAULT CHARSET=utf8 COMMENT='用户访问记录表'

/*!50100 PARTITION BY RANGE (TO_DAYS(startTime))

(PARTITION p20151204 VALUES LESS THAN (736302) ENGINE = InnoDB,

PARTITION p20151205 VALUES LESS THAN (736303) ENGINE = InnoDB,

PARTITION p20151206 VALUES LESS THAN (736304) ENGINE = InnoDB,

PARTITION p20151207 VALUES LESS THAN (736305) ENGINE = InnoDB,

PARTITION p20151208 VALUES LESS THAN (736306) ENGINE = InnoDB,

PARTITION p20151209 VALUES LESS THAN (736307) ENGINE = InnoDB,

PARTITION p20160824 VALUES LESS THAN (736566) ENGINE = InnoDB, ##小于'2016-08-25 23:59:47'

PARTITION p20160825 VALUES LESS THAN (736567) ENGINE = InnoDB,

PARTITION p20160826 VALUES LESS THAN (736568) ENGINE = InnoDB,

PARTITION p20160827 VALUES LESS THAN (736569) ENGINE = InnoDB,

mysql> select TO_DAYS('2016-08-25 23:59:47') from Client limit 1;

+--------------------------------+

| TO_DAYS('2016-08-25 23:59:47') |

+--------------------------------+

| 736566 |

+--------------------------------+

1 row in set (0.00 sec)

mysql> select TO_DAYS('2016-08-26 23:59:47') from Client limit 1;

+--------------------------------+

| TO_DAYS('2016-08-26 23:59:47') |

+--------------------------------+

| 736567 |

+--------------------------------+

1 row in set (0.00 sec)

mysql> SELECT min(startTime),max(startTime) from ClientActionTrack PARTITION (p20160825);

+---------------------+---------------------+

| min(startTime) | max(startTime) |

+---------------------+---------------------+

| 2016-08-25 00:04:57 | 2016-08-25 23:59:47 |

+---------------------+---------------------+

1 row in set (0.03 sec)

mysql> select min(startTime),max(startTime) from ClientActionTrack where startTime>'2016-08-25 00:00:00' and startTime

+---------------------+---------------------+

| min(startTime) | max(startTime) |

+---------------------+---------------------+

| 2016-08-25 00:04:57 | 2016-08-25 23:57:57 |

+---------------------+---------------------+

1 row in set (0.03 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值