如何从具有数百万条记录的表中加快删除操作?

时间:2013-08-05 13:53:10

标签: sql sql-server sql-delete

 BEGIN TRANSACTION
   BEGIN TRY 
      ;WITH CTE_TQUOTEWO
          AS
          (
            SELECT WORKID,QUOTE_NO
            FROM ABC_TQUOTEWO WITH(INDEX(PK_TQUOTEWO_ID))
            WHERE TQUOTEWO_ID != '' 
          )
        DELETE CA
        FROM CTE_TQUOTEWO CA  
        JOIN I_ABC_TQUOTEWO AT WITH(INDEX(PK_ITQUOTEWO_ID))
        ON AT.WORKID = CA.WORKID
        AND AT.QUOTE_NO = CA.QUOTE_NO
        AND AT.TQUOTEWO_ID != '';
     COMMIT TRANSACTION
   END TRY
   BEGIN CATCH
    ROLLBACK TRANSACTION
   END CATCH

我有一个包含数百万条记录的表,并且没有定义索引,但仍需要很长时间才能执行。任何人都可以建议更快地执行删除操作吗? 使用sql server ...

3 个答案:

答案 0 :(得分:2)

如果您需要删除所有行。

USE EXTRA CARE ....我的意思是EXTRA,因为我在一张桌子上使用它,我不想删除所有行。谢天谢地,它是在测试环境中。

SQL TRUNCATE

答案 1 :(得分:0)

如果您不需要记录,可以使用Truncate

答案 2 :(得分:0)

TRUNCATE TABLE TableName;

截断应该比

更快
DELETE FROM TableName;