在ASE12.5.1环境下测试:
--exec sp_test_count '2009-10-01', '2009-10-08'
--drop PROCEDURE sp_test_count
CREATE PROCEDURE sp_test_count
(
@starttime datetime,
@endtime datetime
)
AS
declare @totalCount numeric(18,0)
declare @tempCount numeric(18,0)
declare @day datetime
declare @nextday datetime
declare @datestr varchar(24)
declare @sql varchar(200)
declare @tempday datetime
select @totalCount=0
select @tempCount=0
select @day=@starttime
select @nextday=@endtime
create table #t1(total numeric(18,0)) --创建临时表,用来存放所需统计数据
while(@day<@nextday)
begin
select @tempday=@day
--convert转换后的结果为2009/10/01
select @datestr=convert(varchar(20), @day,111 )
--获得日期的字符串格式:20090720,以匹配t_test_20091001,t_test_20091002 ... 07
select @datestr=substring(@datestr,1,4)+substring(@datestr,6,2)+substring(@datestr,9,2)
select @sql ="insert into #t1 select count(*) from t_test_"+@datestr + " a where a.name='abc' and exists (select number from t_test2 where a.no=number)"
exec(@sql)
--对日期中的分量——天进行加1
select @day=dateadd(dd ,1, @tempday)
end
select @totalCount=sum(total) from #t1
drop table #t1
注:
1.exec(@sql)不能返回查询结果,所以需要将动态查询结果先插入到临时表,再select * from #t1返回结果。
2.匹配好的t_test_20091001,必须进行重命名,如上面的a,a.name。否则,会报如下的错误:
Server Message: Number 102, Severity 15
Server 'SYBASE', Line 1:
Incorrect syntax near '='.
3.SQL Advantage中查看一条语句的执行时间,在这条语句的前后加上:
select convert(varchar(24) , getdate(),109 )
分享到:
相关推荐
资源里包含SQL文档:创建数据库和存储过程.sql 生成数据.sql 测试.sql 比较完善的大量数据分表功能代码,包含...数据按照每个月创建一个数据表,通过存储过程输入参数,按照指定日期跨表查询数据,并且可以分页查询。
【标题】"sharding-jdbc按月分表样例"是一个关于使用Sharding-JDBC进行数据库分片的示例项目,旨在展示如何根据月份动态地将数据分散到不同的表中,以实现数据的水平扩展和负载均衡。Sharding-JDBC是阿里巴巴开源的...
【hibernate动态分表】是一种数据库设计策略,主要用于处理大数据量的问题,通过将数据分散到多个物理表中,以实现水平扩展,提高查询效率,减轻单表的压力。在Java Web开发中,Hibernate作为一款流行的ORM(对象...
基于MyCat1.6正式版的源码修改的,...只需配置开始日期即可,首先要确定的一点就是子表要在mysql里面真实存在,可以进行动态创建表达到子表的自动增长。subTableWay是表示按月,也可以按照日期,及subTableWay="BYDATE
一个简单的oracle数据库环境下的存储过程,介绍了如何从带年月人的分表取数据
在MySQL中,面对海量数据的存储和处理,单个表的规模过大可能会导致查询效率下降,甚至影响系统的稳定性和可用性。为了解决这一问题,分表设计成为了数据库优化的重要手段。分表能够有效地分散数据库的压力,提高...
1、修改表名 2、创建新表 3、按时间条件插入数据 由于数据太大、用的改表名的方式备份分表,通过传入表名和条件字段名备份相应的表
在本项目中,分表策略可能基于年份,将每年的数据存储在一个单独的表中,这有助于优化查询性能和存储管理。 6. **pom.xml**: 这个文件是Maven项目的配置文件,其中包含了项目依赖的库和插件信息。在本项目中,`...
在本示例中,采用的是“按月动态分表”,即根据时间字段(通常是日期或月份)对数据进行划分,确保每个表的数据量保持在一个合理的范围内。这种策略适用于有明显时间序列的数据,例如日志记录、交易数据等。 2. **...
总的来说,这个存储过程展示了如何在MySQL中动态创建表和进行数据分表的操作,它对于处理大量数据的系统非常有用,可以显著提高查询效率和系统响应速度。同时,这种方法也使得数据库的扩展性和可维护性得到了提升,...
利用MybatisPlus来实现对表的水平分表,全自动,可以首先判断表是否存在,不存在创建表,然后设计有定时任务,可以每个月月末的时候,去创建下一个分表程序
在数据分析和大数据处理中,将一个大表分成多个小表是一种常见的优化策略,这有助于提高查询效率、降低存储压力,并便于分布式处理。本主题将详细探讨如何利用Python进行数据表的拆分工作。 首先,我们需要了解为...
在现代企业级应用中,随着数据量的增长,单表存储可能会遇到性能瓶颈,这时就需要引入分库分表的策略来优化数据库的性能。"spring动态数据源+mybatis分库分表"是一个针对大型数据库场景的解决方案,它利用Spring框架...
这里我们定义了一个名为`order`的表,实际存储在以年月命名的数据库中,如`db2022-01`,并且根据`order_date`字段进行分表。 2. 读写分离配置:ShardingJDBC也支持读写分离,只需添加数据源配置即可: ```yaml ...
- 注意,支持【子表】,填入对应子表名、id、关联主表id,执行分表的时候,将对应把子表分表【目前支持2个子表,如果您想更多个子表,请自行修改代码】 - 为什么要分享 - 赚积分呗,老子十几年的CSDN会员了,想在...
【MySQL分表查询】在大型数据库系统中,随着数据量的不断增长,单表的数据规模可能会变得非常庞大,导致查询效率下降,系统性能受到影响。此时,分表技术就显得尤为重要。MySQL提供了多种分表策略,如哈希分表、范围...
2. **分库分表**:这是数据库垂直拆分的一种策略,通过将一个大表分散到多个数据库或表中,以减轻单个数据库的压力。Sharding-JDBC允许根据自定义的分片策略,如哈希取模、范围分片等方式,进行数据分片。 3. **...
为了解决这些问题,分表技术应运而生,通过将数据分散到多个表中,降低单一表的访问压力,提升数据处理速度。 分表的主要好处包括: 1. **提高并发能力**:多表并行处理,避免了单一表上的锁竞争,提高了系统的并发...
同时,通过动态表路由和自动建表机制,可以实现在业务运行过程中根据需要自动创建新的分表,从而简化数据库管理,提升系统扩展性和灵活性。这种方案在处理大规模数据和高并发场景时具有显著优势。