视图更新???????????????????????????

being21 2006-05-24 05:38:58
CREATE VIEW TAlarmEventView
AS SELECT * FROM TAlarmEventHistory UNION SELECT * FROM TAlarmEvent
GO
CREATE VIEW TAcceptEventView
AS SELECT * FROM TAcceptEventHistory UNION SELECT * FROM TAcceptEvent
GO
CREATE VIEW TTaskView
AS SELECT * FROM TTaskHistory UNION SELECT * FROM TTask
GO
TAlarmEvent,TAcceptEvent,TTask,是公司主要的表。记录了很大的数据量。
现在领导提出:是不是可以建立TAlarmEventHistory,TAcceptEventHistory,TTaskHistory
这样三个历史表。这样平时的更新操作就只是在一个月的数据量里面进行,可以明显提高速度。
但是现在没有办法去执行!!!遇到了困难。
创建试图后,发现试图不能更新。看帮助:要建立分区列。哈哈,我们就一个服务器。
看来是个错误的办法。
于是就为难了,请大家帮助。
一:我想要把一个月的数据到时间就备份到历史表里面。
需要建立一个任务(事物)来按时执行这个东西。
高手应该都知道,小生没有看明白。
二:有没有好的解决方案?
谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
还有 这样创建的视图效率和 原来一样?这个是我的感觉!!对么???
求高手帮忙啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
等待!!!!!!!!!
...全文
228 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
being21 2006-05-25
  • 打赏
  • 举报
回复
我怎么才能实现每个月备份一次?
上面所说的作业???在哪里建立??
是建立一个存储过程么??
怎么去触发啊?/让他自动去执行???难道我要去用另外程序写么?
being21 2006-05-25
  • 打赏
  • 举报
回复
建立索引的时候,为什么不让我在有两个主键的表上面建立???

being21 2006-05-25
  • 打赏
  • 举报
回复
早上,来了。
昵称被占用了 2006-05-24
  • 打赏
  • 举报
回复
领导的思路很好,但需要规定来配合,应该规定多久的数据进入历史表,而且不管多久的数据进入历史表,一旦进入历史表就不允许修改。这样你只要做修改当前表的功能,只有在查询的时候需要视图,甚至分开历史和当前查询而不必视图。


建立作业很简单,都可以在企业管理器操作,语句大概是:

insert tablenameHistory(....)
select ... from tablename
where 日期字段<=dateadd(month,6,getdate()) --当前表保留半年

delete tablename
where 日期字段<=dateadd(month,6,getdate())


这段代码放到作业,每月执行一次
WangZWang 2006-05-24
  • 打赏
  • 举报
回复
转移到历史表可以创建一个作业,定时执行SQL进行数据转移.
--如:
SET XACT_ABORT on
begin tran
Insert into TAlarmEventHistory
select * from TAlarmEvent where datediff(day,时间字段,getdate())>=多少天

delete TAlarmEvent where datediff(day,时间字段,getdate())>=多少天
commit tran


这样创建的视图效率对查询数据速度有所加快,而且在更新业务表时不必
维护历史数据,也加快更新速度.

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧