请教sql server update问题

aloka 2004-11-16 10:38:28
我有一个SQL数据库 其中一个表有一个字段是日期(日期型),它平常是NULL,我每月要统计工作量:就是对所有日期为NULL的记录进行统计,但由于数据量大,我害怕正统计时,又有数据进来,所以就先把 所有日期为NULL的记录UPDATE为当前时间,然后对所有日期=当前时间的记录进行统计,但这样做非常慢,请问:
1、这样做对吗?如对的话,应该怎样提高速度?建立什么样的索引?
2、如不对?应该怎样做?
谢谢!
...全文
73 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-11-16
  • 打赏
  • 举报
回复
用exists的好处是效率高, 也不用考虑临时表的字段影响统计(即统计处理的字段名要写明别名)
zjcxc 元老 2004-11-16
  • 打赏
  • 举报
回复
select 主键 into #t from 原表 where 日期 is null
select 统计...
from 原表 a
where exists(select * from #t where 主键=a.主键)
drop table #t
zengzhengliang 2004-11-16
  • 打赏
  • 举报
回复
建临时表
aloka 2004-11-16
  • 打赏
  • 举报
回复
把记录主健放入到一个创建的临时表,然后对用什么样的语句对这些记录记录进行统计好呢?主键IN(select 主键 from 临时表)?
iswear428 2004-11-16
  • 打赏
  • 举报
回复
日期建立索引也不见得很快,正确的是把记录主健放入到一个创建的临时表,UPDATE当然会影响效率了,而且你统计完之后还要把它UPDATE回来
iswear428 2004-11-16
  • 打赏
  • 举报
回复
UP
sxslyf 2004-11-16
  • 打赏
  • 举报
回复
楼上说的对,把记录的主键值放到临时表中
或者你给日期字段建索引
victorycyz 2004-11-16
  • 打赏
  • 举报
回复
你可以先把这些记录的主键值放到临时表中。
victorycyz 2004-11-16
  • 打赏
  • 举报
回复
你可以先把这些记录放到临时表中。

不要update。

34,587

社区成员

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

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