Sql-Server

哪個命令刪除和釋放空間

  • August 24, 2015

我正在閱讀這98-364 exam本書,有一個問題我無法完全回答:

“你會使用什麼命令從聯繫人表中刪除所有不屬於美國的記錄,同時釋放這些記錄使用的空間?”

如果“沒有美國的國家”不在那裡,它只會是“截斷命令”,因為它會清除該表中的所有數據,並釋放空間。據我所知,刪除命令不會釋放空間,而且我找不到在針對特定記錄時既刪除又釋放空間的命令。

這本書有錯別字嗎?或者有沒有人知道的命令?

**注意:**它是 “What command …",而不是commands

編輯:(斯圖爾特)這裡有很多有用的答案,在我看來,這本書有點模棱兩可。在“您將使用哪個命令”之外,如果考試中出現這種情況,“預期”答案會是什麼?我假設他們正在尋找“帶有 where 子句的刪除命令”。僅僅是因為他們到目前為止,僅建議書中的三種方法(刪除/截斷/刪除)。

在某些情況下,Microsoft 考試(和準備材料)往往很愚蠢。它最適合排除答案。你必須保留記錄嗎?所以截斷不是你的選擇(創建一個新表通常不是解決它的正確方法)。

刪除確實釋放了空間。當然不是硬碟空間,而是(再次通常)聚集索引內的空間。鬼清理過程真正要整理的背景對於98-364來說太複雜了。這個考試是關於數據庫基礎知識的。

不確定 SQL Server 的確切語法(有一個編輯說您的 RDBMS 是 SQL Server),但我會做這樣的事情(我假設 TRANSACTION 是**-**單 - 命令 :-) . 我認為單行命令是不可能的。

(pseudocode)

BEGIN TRANSACTION;
CREATE TABLE dummy AS SELECT * FROM My_Original_Table WHERE country = 'USA';
TRUNCATE  My_Original_Table;
INSERT INTO My_Original_Table SELECT * FROM dummy;
DROP TABLE dummy;
COMMIT;

可能很有趣。

引用自:https://dba.stackexchange.com/questions/111964