`
henghengdh
  • 浏览: 157469 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

分表查询(存储过程) (转)

阅读更多
前提,数据库每天会新建一张表,由于数据量非常大,表的数据结构是一样的。

下面这个存储过程是返回一条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

这个存储过程在对会大数据量的时候,大系统利用分表来处理数据量的时候非常有用。
分享到:
评论

相关推荐

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

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

    mysql 用存储过程 备份分表

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

    oracle 查询从分表取数据

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

    Python与MySQL分表分库实战

    3. **SQL路由**:在Python应用中,需要编写代码来确定数据应存储或查询在哪个数据库或表中,这通常通过自定义路由类实现。 4. **数据迁移与同步**:在进行分表分库后,可能需要定期或在特定情况下进行数据迁移和...

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

    3. **MyBatis**:MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以被非常容易地集成到任何支持JDBC的数据库中。...

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

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

    msyql分表sql,导入即可

    分表是数据库水平扩展的一种常见方法,它将一个大表的数据分散到多个物理表中,每个表存储一部分数据。这种策略可以有效地降低单个表的数据量,从而提高查询速度和并发处理能力。在MySQL中,通常有两种主要的分表...

    Python+MySQL分表分库实战

    分库分表是将原本存储在一个数据库中的数据按照某种规则分散存储到多个数据库或表中的过程。这种做法可以有效减轻单个数据库的压力,提高数据处理的吞吐量和查询效率,尤其是在涉及到海量数据处理和高并发访问的场景...

    转:Mybatis分库分表扩展插件

    测试数据库初始化脚本在这个过程中扮演着重要角色,它可以帮助开发者快速搭建测试环境,验证分库分表插件的配置是否正确,确保在生产环境中能够稳定运行。 总的来说,Mybatis分库分表扩展插件是应对大数据量挑战的...

    数据分库分表之二叉树分库分表

    数据分库分表是指将原始数据库中的数据分散存储到多个不同的数据库或表中,以此达到提高数据处理能力的目的。分库分表主要有两种形式:水平分库分表和垂直分库分表。本文着重讨论的是水平分库分表,即不改变表结构的...

    对分库分表的一些想法

    这些工具提供了丰富的功能,如自动分片、数据迁移、读写分离等,能够简化分库分表的实施过程。 总的来说,对分库分表的理解和应用需要结合业务需求、系统架构以及技术选型多方面考虑。在实践中,我们需要权衡性能、...

    Java+Springboot+mybatis+sharding jdbc 实现分库分表

    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它允许开发者直接编写原生的SQL查询,同时还能享受到ORM(Object-...

    分库分表自动建库表小工具

    “分库分表自动建库表小工具”的出现,正是为了解决数据库架构优化过程中遇到的效率和准确性的双重难题。该工具通过读取用户自定义的配置文件和SQL模板文件,自动生成所需的SQL脚本,极大地简化了传统人工编写SQL...

    mysql分表创建

    - **存储过程**:编写存储过程来处理插入、更新和删除操作,根据业务规则选择目标分表。 - **中间件**:使用数据库中间件如MyCAT、Amoeba等,它们可以自动处理数据路由和分片逻辑,减轻开发人员的负担。 - **MySQL...

    杰奇小说系统分站分表手机版模板

    在杰奇小说系统中,通过将数据分散到多个表中,可以降低单个表的数据量,从而减少查询时的锁竞争,提高查询速度。例如,小说章节、用户信息等可能会被分散到不同的表中,根据某种规则(如ID范围或哈希值)进行分配,...

    Mybatis分库分表扩展插件

    Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。然而,随着业务的发展,单表数据量过大时,查询效率会显著下降,因此,分库分表...

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

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

    MySQL 分库分表的实现原理及演示案例

    分库分表技术可以将数据分散存储到多个数据库或表中,以此来达到减轻单个数据库服务器的压力,提高查询效率和系统性能的目的。 数据库分库分表的几种方式主要包括垂直分库、垂直分表、水平分库和水平分表。垂直分库...

Global site tag (gtag.js) - Google Analytics