如何按datetime列对表进行分区?
时间:2011-05-23
来源:互联网
SQL code
CREATE TABLE raw_log_2011_4 ( id bigint(20) NOT NULL AUTO_INCREMENT, logid char(16) NOT NULL, tid char(16) NOT NULL, reporterip char(46) DEFAULT NULL, ftime datetime DEFAULT NULL, KEY id (id) ) ENGINE=InnoDB AUTO_INCREMENT=286802795 DEFAULT CHARSET=utf8 PARTITION BY hash (day(ftime)) partitions 31;
但是当我查询一天的数据的时候,查询计划并不能直接定位分区。我的查询语句如下:
SQL code
explain partitions select * from raw_log_2011_4 where day(ftime) = 30;
换了好多查询语句都不行。当我使用如下的语句,可以直接定位分区,但是不能查询一天的数据。
SQL code
explain partitions select * from raw_log_2011_4 where ftime = '2011-03-30';
是否有方法能让我既能查询数据又可以利用分区,多谢!
作者: mschen 发布时间: 2011-05-23
结果如何
作者: wwwwb 发布时间: 2011-05-23
| 1 | SIMPLE | raw_log_2011_4 | p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30 | ALL | NULL | NULL | NULL | NULL | 1000498 | Using where |
作者: mschen 发布时间: 2011-05-23
mysql只认识to_days(), year()两个分区函数
作者: rucypli 发布时间: 2011-05-23
作者: wwwwb 发布时间: 2011-05-23
-> id bigint(20) NOT NULL AUTO_INCREMENT,
-> logid char(16) NOT NULL,
-> tid char(16) NOT NULL,
-> reporterip char(46) DEFAULT NULL,
-> ftime datetime DEFAULT NULL,
-> KEY id (id)
-> ) ENGINE=InnoDB AUTO_INCREMENT=286802795 DEFAULT CHARSET=utf8
-> PARTITION BY hash (to_days(ftime)) partitions 31;
Query OK, 0 rows affected (0.89 sec)
mysql> explain partitions select * from raw_log_2011_5 where ftime = to_days('20
11-03-30')\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: raw_log_2011_5
partitions: p8
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 2
Extra: Using where
1 row in set, 2 warnings (0.00 sec)
ERROR:
No query specified
作者: rucypli 发布时间: 2011-05-23
SQL code
CREATE TABLE raw_log_2011_4 ( id bigint(20) NOT NULL AUTO_INCREMENT, logid char(16) NOT NULL, tid char(16) NOT NULL, reporterip char(46) DEFAULT NULL, ftime datetime DEFAULT NULL, KEY id (id) ) ENGINE=InnoDB AUTO_INCREMENT=286802795 DEFAULT CHARSET=utf8 PARTITION BY hash (to_days(ftime)) partitions 31;
SQL code
explain partitions select * from raw_log_2011_4 where to_days(ftime) = to_days('2011-03-30');
依旧是全表扫描。
作者: mschen 发布时间: 2011-05-23
作者: mschen 发布时间: 2011-05-23
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28