mysql按时间字段进行分区 ,后跨分区查询问题请教

zxwbb 2007-01-21 12:33:35
MYSQL版本:MySQL5.1.7-noinstall-beta(win32)
--建表语句
DROP TABLE IF EXISTS MD_TEST;
CREATE TABLE MD_TEST
(
STAT_TIME DATETIME NOT NULL,
VALUE INT UNSIGNED NOT NULL
)
PARTITION BY RANGE (DAYOFYEAR(STAT_TIME)) (
PARTITION p1 VALUES LESS THAN (1),
PARTITION p2 VALUES LESS THAN (2),
PARTITION p3 VALUES LESS THAN MAXVALUE);
--插入测试数据库
INSERT INTO `md_test` (`STAT_TIME`, `VALUE`) VALUES
('2007-01-01',100),
('2007-01-02',200),
('2007-01-21',120);
--跨分区查询
SELECT STAT_TIME,SUM(VALUE) FROM md_test
WHERE STAT_TIME>=DATE'2007-01-01' AND STAT_TIME<=DATE'2007-01-03'
GROUP BY STAT_TIME
结果
STAT_TIME SUM(VALUE)
2007-1-1 0:00 100
查询结果与期望不符合
是我的建表还是查询语句有问题,百思不得其解,望高手不吝赐教!万分感谢。
...全文
1901 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxwbb 2007-01-25
  • 打赏
  • 举报
回复
请各位版主、大侠们不吝赐教呀。该方案急需确定急盼明示!
zxwbb 2007-01-23
  • 打赏
  • 举报
回复
按时间分区优化问题
--方案1
DROP TABLE IF EXISTS TEST_DATA_SPEED;
CREATE TABLE TEST_DATA_SPEED
(
STAT_TIME DATETIME NOT NULL,
VALUE INT NOT NULL DEFAULT 0
)
PARTITION BY HASH(TO_DAYS(STAT_TIME))
PARTITIONS 100;

EXPLAIN PARTITIONS
SELECT STAT_TIME,COUNT(*) FROM TEST_DATA_SPEED WHERE
((STAT_TIME>=ADDDATE('2007-01-27 10:00:00',-1) AND STAT_TIME<=STR_TO_DATE('2007-01-27 10:00:00','%Y-%m-%d %H:%i:%S')))
GROUP BY STAT_TIME
结果不能在指定的分区上查询,是全表检索。

--方案2
DROP TABLE IF EXISTS TEST_DATA_SPEED2;
CREATE TABLE TEST_DATA_SPEED2
(
STAT_TIME DATETIME NOT NULL,
VALUE INT NOT NULL DEFAULT 0
)
PARTITION BY RANGE (TO_DAYS(STAT_TIME)) (
PARTITION p1 VALUES LESS THAN (to_days('2007-01-20')),
PARTITION p2 VALUES LESS THAN (to_days('2007-01-21')),
PARTITION p3 VALUES LESS THAN (to_days('2007-01-22')),
PARTITION p4 VALUES LESS THAN (to_days('2007-01-23')),
PARTITION p5 VALUES LESS THAN (to_days('2007-01-24')),
PARTITION p6 VALUES LESS THAN (to_days('2007-01-25')),
PARTITION p7 VALUES LESS THAN (to_days('2007-01-26')),
PARTITION p8 VALUES LESS THAN (to_days('2007-01-27')),
PARTITION p9 VALUES LESS THAN (to_days('2007-01-28')),
PARTITION p10 VALUES LESS THAN (to_days('2007-01-29')),
PARTITION p11 VALUES LESS THAN (to_days('2007-01-30')),
PARTITION p12 VALUES LESS THAN MAXVALUE );

EXPLAIN PARTITIONS
SELECT STAT_TIME,COUNT(*) FROM TEST_DATA_SPEED2 WHERE
((STAT_TIME>=ADDDATE('2007-01-27 10:00:00',-1) AND STAT_TIME<=STR_TO_DATE('2007-01-27 10:00:00','%Y-%m-%d %H:%i:%S')))
GROUP BY STAT_TIME
结果可在指定的分区上(p8,p9)查询。可是该方案不能循环利用分区。

是否有即可循环利用分区,又可跨分区查询指定分区的分区实现方法,请版主、高手们指教!
zxwbb 2007-01-23
  • 打赏
  • 举报
回复
各位大侠指教后一定结分了:)
懒得去死 2007-01-23
  • 打赏
  • 举报
回复
那就接点分吧。
hy2003fly 2007-01-22
  • 打赏
  • 举报
回复
等有人进来顶了,你就可以结贴了.
zxwbb 2007-01-22
  • 打赏
  • 举报
回复
这种情况如何结贴?请高手指教!
zxwbb 2007-01-22
  • 打赏
  • 举报
回复
我将MYSQL版本改为:MySQL5.1.14-noinstall-beta(win32),问题解决。
可能是 MySQL5.1.7在这种情况下查询有问题。以后大家遇到类似问题升级MYSQL版本即可:)
内容概要:本文详细介绍了基于Matlab实现的“梯级水光互补系统最大化可消纳电量期望短期优化调度模型”,属于电力系统领域高水平科研成果的复现(EI级别)。该模型聚焦于梯级水电站与光伏发电系统的协同优化调度,通过构建短期优化调度框架,旨在提升可再生能源的电量消纳能力并最大化系统综合效益。研究采用先进的数学优化方法对水光资源进行联合调度,充分考虑了光伏出力的不确定性、水资源约束、系统运行边界条件及电力平衡要求,实现了在多重约束下的电量期望最大化目标。模型不仅具备严谨的理论基础,还具有良好的工程应用前景,适用于新能源高比例渗透背景下电力系统的优化调度研究与实践。; 适合人群:具备电力系统分析、可再生能源利用或优化建模背景的研究生、科研人员及工程技术人员,特别适合致力于复现高水平学术论文(EI/顶刊)研究成果的学习者与开发者。; 使用场景及目标:① 学习并掌握梯级水电与光伏系统协同调度的建模思路与关键技术;② 熟悉基于Matlab的混合整数线性规划(MILP)或其他非线性优化方法在能源系统中的实际应用;③ 提升在新能源消纳、短期调度优化等方向的科研建模能力与代码实现水平,支持二次开发与创新研究。; 阅读建议:建议结合Matlab代码与优化理论同步研读,重点理解目标函数的设计逻辑、各类物理与运行约束的数学表达以及求解器的调用流程,推荐使用YALMIP等建模工具辅助实现,以提高模型构建效率与可读性,便于深入理解与后续拓展。

57,064

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧