有些人在刪除表的所有記錄的時候,喜歡這樣來——不給DELETE 語句提供WHERE 子句,表中的所有記錄都將被刪除。但這種方法是不可取的,正確的應該使用
TRUNCATE TABLE tb_name
為什么要用TRUNCATE TABLE 語句代替DELETE語句?
因為:雖然TRUNCATE TABLE在功能上與不帶WHERE子句的DELETE語句相同:二者均刪除表中的全部行。但TRUNCATE TABLE比DELETE速度快,且使用的系統和事務日志資源少。
DELETE語句每次刪除一行,并在事務日志中為所刪除的每行記錄一項。
TRUNCATE TABLE通過釋放存儲表數據所用的數據頁來刪除數據,并且只在事務日志中記錄頁的釋放。
TRUNCATE,DELETE,DROP放在一起比較:
TRUNCATE TABLE:刪除內容、釋放空間但不刪除定義。
DELETE TABLE:刪除內容不刪除定義,不釋放空間。
DROP TABLE:刪除內容和定義,釋放空間。
truncate刪除表比較快,但刪除的數據不能恢復,只能刪除表中的所有數據
而delete刪除比truncate慢,刪除的數據可以恢復,后面可以跟where條件刪除某些指定記錄。
新聞熱點
疑難解答