mysql子分区多少层_MYSQL子分区修剪

博主探讨了在MySQL 5.1中遇到的问题,即使用时间戳进行分区的表在按月份查询时无法有效修剪分区。他们希望找到一种方法,使得在已知年份和月份的情况下,查询能直接定位到特定的子分区,以提高查询效率。目前的查询扫描了整个年份的12个子分区。博主建议考虑转换日期为整型的UNIX时间戳进行分区,以优化查询性能。
摘要由CSDN通过智能技术生成

我有一个MYSQL表与分区的年份和子分区的月份。MYSQL子分区修剪

CREATE TABLE ptable (

id INT NOT NULL AUTO_INCREMENT,

name varchar(100),

purchased DATETIME NOT NULL,

PRIMARY KEY (id, purchased)

)

PARTITION BY RANGE(YEAR(purchased))

SUBPARTITION BY HASH(MONTH(purchased))

SUBPARTITIONS 12 (

PARTITION p0 VALUES LESS THAN (2011),

PARTITION p1 VALUES LESS THAN (2012),

PARTITION p5 VALUES LESS THAN MAXVALUE

);

我对这张表的大部分查询都涉及年份或月份。当我尝试按月查询时,它不会正确修剪并扫描给定年份的所有12个子分区。

explain partitions

SELECT *

FROM ptable

WHERE purchased BETWEEN '2011-12-01' AND '2011-12-31';

我的问题是有办法告诉MYSQL只查询特定的子分区,当我知道年份和月份值?或者可能有更好的做法。我正在使用MYSQL 5.1。

+0

当分区制作正确时,mysql会自动执行,如果我是你,我会将日期转换为int unsigned并使用unix时间戳p分区 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值