前提,数据库每天会新建一张表,由于数据量非常大,表的数据结构是一样的。
下面这个存储过程是返回一条SQL语句的。
我们传入的是两个时间,得到的是查询这段时间内的数据的一个SQL语句。
Create Procedure Search
@date1 datetime, --起始时间
@date2 datetime --终止时间
as
declare @date1New datetime,
@rq varchar(6),
@i int , --记录循环次数
@s varchar(5000) --根据表多少 可以扩大它
set @rq = convert(varchar,@date1,12)--把时间格式化,比如2008-06-20变成080620
--set @rq = select convert(varchar,@date1,12)是完全错误的,select的作用是显示,不是传值
set @s = 'select * from MainTable' + @rq --初始化@s='select * from MainTable080620' 这样第一个表就有了
set @i = datediff(d,@date1,@date2) --日期相减,按日计算
while @i > 0
begin
--如果是非常重要的系统可以在这里加上该物理表是否存在的语句
--以下是对于2000来讲,2008已经不存在于这个系统表里面了。其中IsUserTable是指表名。
--sql2000
--if exist( select * from dbo.sysobjects where id = object_id(N'c') and OBJECTPROPERTY(id,N'IsUserTable')=1)
--sql2008
--if exist( select * from dbo.sysobjects where name='IsUserTable')
--begin
--select '存在'
--end
--else
--begin
--select '不存在'
--end
set @date1New = dateadd(day,@i,@date1)
set @rq=convert(varchar,@date1New,12)
--如果是按月进行查询就修改上面,把d改成m
set @s = @s + 'union all select * from MainTable' + @rq
set @i = @i -1 --累加
end
select @s
end
例如:我们的表名叫作:MainTable+yymmdd,如MainTable100406,MainTable100407。。。
那么当我们传入2010-04-06和2010-04-08,那么这个存储成功执行之后的结果会是:
select * from MainTable100406
union all
select * from MainTable100407
这个存储过程在对会大数据量的时候,大系统利用分表来处理数据量的时候非常有用。
分享到:
相关推荐
springboot+mybat(多数据源) 通过aop实现分库的操作 ,通过传入的动态表明实现分表查询
分表是一种数据库分割技术,用于将大表拆分成多个小表,以提高数据库的性能和可管理性。在MySQL中,可以使用多种方法进行分表,例如基于范围、哈希或列表等...下面将详细介绍MySQL如何分表以及分表后如何进行数据查询。
mysql 分库分表查询工具-shard
一个简单的oracle数据库环境下的存储过程,介绍了如何从带年月人的分表取数据
- 分表情况,2:日期分表,按照目标表里面的记录日期的字段,按照日期【日、周、月、年】拆分成多个表【本代码仅考虑unix时间戳来分表,其它不支持,您可以自己思考,自己修改代码】 - 注意,支持【子表】,填入...
Python与MySQL分表分库实战,压缩包文件,欢迎下载。11
针对spring boot 集成jpa sql操作进行自定义分库分表逻辑
本文实例讲述了thinkPHP框架实现多表查询的方法。分享给大家供大家参考,具体如下: 我们可以将两个表连起来一起查询数据,我现在有两张表,一个是feedback表和member表,如图: 总目录: 上代码: $where = ...
主要介绍了如何使用SpEL表达式实现动态分表查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
资源里包含SQL文档:创建数据库和存储过程.sql 生成数据.sql 测试.sql 比较完善的大量数据分表功能代码,包含...数据按照每个月创建一个数据表,通过存储过程输入参数,按照指定日期跨表查询数据,并且可以分页查询。
平切分,分库,分表,主从,集群 数据库水平切分的实现原理解析
Formwork 3.5,可运行测试
主要介绍了MyBatis实现Mysql数据库分库分表操作和总结,需要的朋友可以参考下
sharind-jdbc样例,当中包含了按月动态分表,一个比较简单的demo,仅供参考!……………………
NULL 博文链接:https://houjiang2100.iteye.com/blog/972641
动态创建表2.1 查询数据库是否存在目标表2.2 动态创建表2.3 定时创建表3. 数据插入3.1 单条数据插入3.2 批量插入3.3 注意 1. 前言 项目开发接到需求,要求将业务数据按月归档,也就是每个月的数据单独保留在一张表...
主要介绍了MySQL数据库优化之分表分库操作,结合实例形式详细分析了mysql数据库分表分库垂直拆分、水平拆分相关原理以及应用案例,需要的朋友可以参考下
利用MybatisPlus来实现对表的水平分表,全自动,可以首先判断表是否存在,不存在创建表,然后设计有定时任务,可以每个月月末的时候,去创建下一个分表程序
Spring MVC +Spring + Mybatis 构建分库分表源码 ,mybatis分库分表源码
应对sharding-jdbc结合mybatis实现分库分表功能 分表的联合查询采用将mysql的数据同步到elasticsearch进行筛选