Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从包含数十亿行的表中删除特定行_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 从包含数十亿行的表中删除特定行

Sql 从包含数十亿行的表中删除特定行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个包含数十亿行的庞大SQL表。例如,如果我必须删除特定日期的记录。最好的方法是什么 Delete * from dbo.table where date in ('date1','date2','date3') 请建议WHILE(1=1) WHILE (1 = 1) BEGIN DELETE TOP (10000) FROM Table_Name WHERE DATE_COLUMN = '20140101' --<-- ANSI DATE format

我有一个包含数十亿行的庞大SQL表。例如,如果我必须删除特定日期的记录。最好的方法是什么

Delete * from dbo.table where date in ('date1','date2','date3')
请建议
WHILE(1=1)
WHILE (1 = 1)
BEGIN
   DELETE TOP (10000)
      FROM Table_Name
   WHERE DATE_COLUMN = '20140101'  --<-- ANSI DATE format  YYYYMMDD
       OR
         DATE_COLUMN = '20140102'
       OR
         DATE_COLUMN = '20140103'

     IF (@@ROWCOUNT < 1)
       BEGIN 
         BREAK;
       END   
END
开始 删除顶部(10000) 从表\u名称
其中DATE_COLUMN='20140101'--您知道日期字段上的索引是什么类型的吗?您介意说明您遇到了什么问题吗?是不是太慢了?是它把你的日志炸掉了吗?它吞噬了所有的记忆吗?试试你的方法。如果您不满意,请返回问题。在日期列上使用索引,我会使用介于“date1”和“dateN”之间的
where dateColumn
clause@ZoffDino:同意。=)我很好奇;为什么这比OP的SQL好?假设date列上存在索引,批处理技术将减少日志空间需求并提高并发性。@DeanOC请参阅