drop table YOUtable
Create table YOUtable
(
  .....
)

解决方案 »

  1.   

    1.条件字段建立索引.
    2.设置sqlserver自动清理日志
      

  2.   

    你的表是不是有很多索引?
    索引最大的好处就是加快查询速度,但是副作用也是很明显的,特别是对经常做DML操作的表,会降低DML的操作速度, 索引越多, 影响越大.
    对纪录数量这么大的表,我没有经验. 不过我想这么大的表, 用常用的方式处理恐怕效果不会很好, 建议参考一些相关的资料
      

  3.   

    索引已经建立了,还有什么别的好办法呢?怎么“设置sqlserver自动清理日志”?
      
      

  4.   

    先Declare 一個table變量。
    DECLARE @rsTmp Table(....)
    然後再把不符合條件的記錄INSERT到@rsTmp中去。再Truncate table,然後再回插數據到table中,不知這樣速度是否有加提高?
      

  5.   

    既然你的刪除是帶where的,那麼建立有效的索引是非常有必要的.
    如果你已經有了群集索引,那麼先暫時將它drop掉.
    並根據where中的情況建立組合索引,記得其前導列一定是使用最頻繁的列.如:
    where date < xxx and customer_id = xxx and card_no = xxx
    那麼就建立date,customer_id,card_no上的組合索引,並且where中單一的使用這些字段,千萬不要用函數,如:where convert(varchar(8),date,120) < xxx...
    同時,將海量的刪除分割開來,在where中儘量使用小的範圍,分步commit;
    這樣會使日誌的內容盡可能的小.
    海量的刪除會讓日誌一下子就爆滿.BTW:你有1萬5千万行數據,為什麼到現在才想起清數據?
      

  6.   

    删除时索引时是最关键的!之前,设置日志自动清除:
     
         sp_dboption dbname,'truncate log on checkpoint',true
         sp_dboption dbname,'autoshrink',true