zoukankan      html  css  js  c++  java
  • SQL Server定时创建动态表

    今天下午在生成奖品奖券的时候,发现由于线上奖池表的数据过多(大概已经有100多万条了),造成再生成奖券的时候,就会因为已经存在数据过多,生成数据的时候出现请求数据超时现象。于是我想怎么才能分担表的负担呢? 于是就想如果每隔一段时间,生成一个表,这样不管是查询还是导入数据,都会非常快,不影响数据库的效率。 由于是定时触发的,我第一个想到的是SQL Server中的触发器或作业。但仔细想了下,这个主要是按照时间发生的改变,还是作业比较适合。 于是现在问题,就变成,如何才能创建动态表名称呢? 网上搜了下微软的文档:http://support.microsoft.com/kb/175850/zh-cn,SQL Server有直接执行动态sql语句的方法 于是就有了下面的完整想法。 1、我先写一个动态的创建表的sql语句。代码: declare @tablename nvarchar(50) set @tablename='Dept' set @tablename=@tablename+cast(datepart(year,GETDATE()) as nvarchar(50))+cast(DATEPART(MONTH,GETDATE()) as nvarchar(50)) select @tablename execute ('CREATE TABLE '+@tablename+'( [Id] [nvarchar](32) NOT NULL, [Name] [nvarchar](32) NULL, [Description] [nvarchar](200) NULL, [CreatedDate] [datetime] NULL, [LastModified] [datetime] NULL ) ON [PRIMARY] ') 2、创建一个作业,把要执行的动态脚本复制进去,创建一个每个月触发一次的作业。 3、启动作业,查看作业是否执行。 这样,一个SQL Server自动创建动态表的逻辑就诞生了。希望对大家有帮助。
    写个博客不容易,请转载的时候备注下原文出处,谢谢
    作者:keepnode
    博客地址:http://www.cnblogs.com/woaic
    每件事到最后都是好事,如果不是好事,说明还没有到最后
    =========================
  • 相关阅读:
    JBoss+MyEclipse+Mysql 的J2EE环境配置。
    编写一个Session EJB
    编写一个MDB (Message Drive Bean)
    轻便的客户端本地文件数据库 SQLite
    SSH(Struts+Spring+Hibernate)Summary/Profile
    Linux test命令
    mysql权限相关
    linux shell 查看进程的可执行程序路径
    添加dns
    Linux的shell变量
  • 原文地址:https://www.cnblogs.com/woaic/p/3942841.html
Copyright © 2011-2022 走看看