`

Sybase存储过程中查询动态表(按天分表)的处理

阅读更多
在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 )  
分享到:
评论

相关推荐

    MSSQLServer数据库大量数据按月份分表、存储过程指定时间段跨表分页查询

    资源里包含SQL文档:创建数据库和存储过程.sql 生成数据.sql 测试.sql 比较完善的大量数据分表功能代码,包含...数据按照每个月创建一个数据表,通过存储过程输入参数,按照指定日期跨表查询数据,并且可以分页查询。

    sharding-jdbc按月分表样例

    【标题】"sharding-jdbc按月分表样例"是一个关于使用Sharding-JDBC进行数据库分片的示例项目,旨在展示如何根据月份动态地将数据分散到不同的表中,以实现数据的水平扩展和负载均衡。Sharding-JDBC是阿里巴巴开源的...

    hibernate动态分表

    【hibernate动态分表】是一种数据库设计策略,主要用于处理大数据量的问题,通过将数据分散到多个物理表中,以实现水平扩展,提高查询效率,减轻单表的压力。在Java Web开发中,Hibernate作为一款流行的ORM(对象...

    oracle 查询从分表取数据

    一个简单的oracle数据库环境下的存储过程,介绍了如何从带年月人的分表取数据

    大数据表的分表处理设计思想和实现(MySQL)

    在MySQL中,面对海量数据的存储和处理,单个表的规模过大可能会导致查询效率下降,甚至影响系统的稳定性和可用性。为了解决这一问题,分表设计成为了数据库优化的重要手段。分表能够有效地分散数据库的压力,提高...

    mycat修改源码扩展subTables 支持按月分表 $201701-? 配置

    基于MyCat1.6正式版的源码修改的,...只需配置开始日期即可,首先要确定的一点就是子表要在mysql里面真实存在,可以进行动态创建表达到子表的自动增长。subTableWay是表示按月,也可以按照日期,及subTableWay="BYDATE

    mysql 用存储过程 备份分表

    1、修改表名 2、创建新表 3、按时间条件插入数据 由于数据太大、用的改表名的方式备份分表,通过传入表名和条件字段名备份相应的表

    springmvc +mybatis采用策略设计模式基于拦截器实现按年分表

    在本项目中,分表策略可能基于年份,将每年的数据存储在一个单独的表中,这有助于优化查询性能和存储管理。 6. **pom.xml**: 这个文件是Maven项目的配置文件,其中包含了项目依赖的库和插件信息。在本项目中,`...

    sharding-jdbc按月分表样例2

    在本示例中,采用的是“按月动态分表”,即根据时间字段(通常是日期或月份)对数据进行划分,确保每个表的数据量保持在一个合理的范围内。这种策略适用于有明显时间序列的数据,例如日志记录、交易数据等。 2. **...

    MySQL动态创建表,数据分表的存储过程

    总的来说,这个存储过程展示了如何在MySQL中动态创建表和进行数据分表的操作,它对于处理大量数据的系统非常有用,可以显著提高查询效率和系统响应速度。同时,这种方法也使得数据库的扩展性和可维护性得到了提升,...

    利用MybatisPlus来实现对表的水平分表,全自动,可以首先判断表是否存在,不存在创建表

    利用MybatisPlus来实现对表的水平分表,全自动,可以首先判断表是否存在,不存在创建表,然后设计有定时任务,可以每个月月末的时候,去创建下一个分表程序

    分表_利用python进行数据表分表_

    在数据分析和大数据处理中,将一个大表分成多个小表是一种常见的优化策略,这有助于提高查询效率、降低存储压力,并便于分布式处理。本主题将详细探讨如何利用Python进行数据表的拆分工作。 首先,我们需要了解为...

    spring动态数据源+mybatis分库分表

    在现代企业级应用中,随着数据量的增长,单表存储可能会遇到性能瓶颈,这时就需要引入分库分表的策略来优化数据库的性能。"spring动态数据源+mybatis分库分表"是一个针对大型数据库场景的解决方案,它利用Spring框架...

    TP5+MySQL通用分表代码

    - 注意,支持【子表】,填入对应子表名、id、关联主表id,执行分表的时候,将对应把子表分表【目前支持2个子表,如果您想更多个子表,请自行修改代码】 - 为什么要分享 - 赚积分呗,老子十几年的CSDN会员了,想在...

    Mysql分表查询,哈希,范围,列表

    【MySQL分表查询】在大型数据库系统中,随着数据量的不断增长,单表的数据规模可能会变得非常庞大,导致查询效率下降,系统性能受到影响。此时,分表技术就显得尤为重要。MySQL提供了多种分表策略,如哈希分表、范围...

    应对sharding-jdbc结合mybatis实现分库分表功能 分表的联合查询采用将mysql的数据同步到elasticsearch进行筛选

    2. **分库分表**:这是数据库垂直拆分的一种策略,通过将一个大表分散到多个数据库或表中,以减轻单个数据库的压力。Sharding-JDBC允许根据自定义的分片策略,如哈希取模、范围分片等方式,进行数据分片。 3. **...

    ShardingJDBC5.1.1按月分库分表、读写分离、自动创表完整demo

    这里我们定义了一个名为`order`的表,实际存储在以年月命名的数据库中,如`db2022-01`,并且根据`order_date`字段进行分表。 2. 读写分离配置:ShardingJDBC也支持读写分离,只需添加数据源配置即可: ```yaml ...

    数据库分表处理设计思想和实现

    为了解决这些问题,分表技术应运而生,通过将数据分散到多个表中,降低单一表的访问压力,提升数据处理速度。 分表的主要好处包括: 1. **提高并发能力**:多表并行处理,避免了单一表上的锁竞争,提高了系统的并发...

    kettle对数据分表插入

    在大数据场景下,单一的大表可能会导致性能瓶颈,因此通常会采用分区策略将数据分散到多个小表中,这被称为分表。这样做可以提高查询效率,减轻单个表的压力。Oracle数据库提供了多种分区策略,如范围分区、列表分区...

Global site tag (gtag.js) - Google Analytics