将表按月分区,每个分区都有上百万条记录,如何快速清空某一个分区中的数据?没有象oracle中的truncate单个分区数据吗?

解决方案 »

  1.   

    TRUNCATE TABLE yourTable
    注意:如果yourTable有外键是行不通的,只能用Delete删除
      

  2.   

    假如是一个A表,我想删掉5月份的那个区,做法如下:
    delete from A where month=(select month from A group by month where month=5)
      

  3.   

    对于分区表,管理员重新定义 UNION ALL 视图以排除最旧的表,然后将该表从数据库中删除(假设已确保备份该表),这个过程几乎可以在瞬间完成http://www.microsoft.com/china/MSDN/library/archives/library/techart/partitionsindw.asp
      

  4.   

    不好意思,可能我没说清楚,我的意思是在sqlserver2005的已分区表中删除某个分区里的全部记录,而不想删除整个表的记录。用delete消耗资源太多,能否象oracle中那样直接truncate单个分区的数据?
      

  5.   

    建立一个空表, 结构与分区表一致然后使用 ALTER TABLE ...SWITCH ...
    将要删除的分区的数据切换到新表这样可以直接 drop 新表.分区数据被切换出去后, 使用 ALTER PARTITION FUNCTION 将不用的分区合并即可.
      

  6.   

    在我所了解的 sql 2005 分区表的知识中, 没有直接删除指定分区的ALTER TABLE SWITCH + DROP TABLE(或者 + TRUNCATE TABLE) 是我所知的最快的方法.
      

  7.   

    sqlserver和oracle在分区上功能差得太多了啊