1
 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 服务器...

4

3 回答 3

2

如果您需要删除所有行。

使用额外的护理......我的意思是额外的,因为我已经在我不想删除所有行的表上使用它。谢天谢地,它是在测试环境中。

SQL 截断

于 2013-08-05T13:54:49.083 回答
0

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

于 2013-08-05T13:55:21.240 回答
0
TRUNCATE TABLE TableName;

截断应该比

DELETE FROM TableName;
于 2013-08-05T13:55:31.960 回答