每天一张表的查询思路

xxy8100 2009-12-22 03:40:10
大侠们,有个问题请大家帮忙,我数据库(mysql)里面有个模板表,就以新闻为例吧,叫news_template,每天会自动生成一张表,名字是news_加日期,比如news_20091221,当天的记录放在里面,现在要检索历史记录 比如条件为给定一个时间区域 20091101至20091230,就检索表news_20091101到表news_20091230中符合要求的记录,然后分页排序什么的,大家一般用什么方法,(可能其中有些天数是没有表的,如果没有记录的话)我的思路是用一个存储过程传入两个时间和其他的一些条件,检索符合要求的表的记录插入一张临时表,最后对临时表进行排序等操作后删除临时表,发现速度很慢,点击一下排序方法都要重新生成临时表操作完删除,不知道大家是用什么方法,望大家不吝赐教!!!!!
...全文
99 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhj 2009-12-25
  • 打赏
  • 举报
回复
呵呵,超级有趣的需求。 限制那么多,还怎么干活啊。
ACMAIN_CHM 2009-12-22
  • 打赏
  • 举报
回复
那或者你可以建一下 merge 表。这样可以在不动原表的基础上自己建个新表。

http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#merge-storage-engine
15.3. MERGE存储引擎
15.3.1. MERGE表方面的问题


如果你连这个也不被允许做的话,那就建个view as select * from news_20091101 union all select * from news_20091102 union all ...


如果你连建视图的权限也没有的话。那只能和你一样在程序中根据起始日期,生成这个SQL语句
select * from news_20091101 union all select * from news_20091102 union all ... select * from news_20091130
这样不需要用临时表。
xxy8100 2009-12-22
  • 打赏
  • 举报
回复
谢谢你,数据库是别人的,结构不能动。
ACMAIN_CHM 2009-12-22
  • 打赏
  • 举报
回复
不建议使用分表,在MYSQL中其实有 分区表 可以实现这种功能。

http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html
18. 分区
18.1. MySQL中的分区概述
18.2. 分区类型
18.2.1. RANGE分区
18.2.2. LIST分区
18.2.3. HASH分区
18.2.4. KEY分区
18.2.5. 子分区
18.2.6. MySQL分区处理NULL值的方式
18.3. 分区管理
18.3.1. RANGE和LIST分区的管理
18.3.2. HASH和KEY分区的管理
18.3.3. 分区维护
18.3.4. 获取关于分区的信息

56,677

社区成员

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

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