2013-08-05 47 views
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 server ...如何加速從擁有數百萬條記錄的表中刪除操作?

+0

可以顯示查詢? –

+0

是否刪除表中的所有行?你能顯示你正在使用的刪除命令嗎? –

+0

參考http://stackoverflow.com/questions/2126434/bulk-delete-on-sql-server-2008-is-there-anything-like-bulk-copy-bcp-for-delet – aads

回答

2

如果您需要刪除所有行。

請慎重....我的意思是EXTRA,因爲我已經用它在我dind't要刪除所有行的表。謝天謝地,它在一個測試環境中。

SQL TRUNCATE

0
TRUNCATE TABLE TableName; 

截斷應該是快於

DELETE FROM TableName; 
+0

但截斷要求DROP特權,而DELETE則沒有。一般來說,你是正確的,TRUNCATE是更快的原因(因爲它只是刪除一個表,然後再次創建它)。 –

相關問題