27,579
社区成员
发帖
与我相关
我的任务
分享
set index_update off
delete from 打卡记录表 where 打卡日期<='2008.12.31'
drop index
create index --建索引的功能还没用过哩,都是在管理工具中操作的
set index_update on
当然这样很容易出乱子,就像 disable trigger 功能一样,忘了恢复会S得很惨。实际比预计快多了,现只保留2009年含后的数据,陈年数据太多了,想批次调整数据真是浪费生命。
之前是直接 delete ps_ReadCard where RCDate<='2008.12.31',花了一个多小时,出来的结果是:error,数据库Log已满、tempdb的Log也满(即硬盘空间都塞满了)。
分段删时发现时间都花在整理索引上。
之前用 select top 0 * into ps_ReadCard_100728_00 from ps_ReadCard 加 insert into ps_ReadCard_100728_00 select * from ps_ReadCard where RCDate>='2009.01.01'要很久,
即 insert into from 格式很慢,直接用 select into from 非常快。
--实际耗时:
select * into ps_ReadCard from ps_ReadCard_100728_All where RCDate>='2009.01.01' --影响497,3903行,耗时1分33秒
--建主键: 2分40多秒 (日期,时间,卡号)
--建索引: 1分10多秒 (日期,工号)
--设默认值: 0秒
--加触发器: 0秒