2011-11-26 67 views
0

我不能爲我的生活還記得那些SQL(SQL服務器2005 +)是刪除後緊湊指標即SQL緊湊型指數刪除後

PK Identity col1 col2 
1   abc def 
3   abc def 

ID 2被刪除了 - 什麼的命令基本上緊湊的指標,同時保持引用完整性(有一個行語句)

謝謝,(我知道我要去「面掌」當我看到答案)

+1

SQL服務器通常重用缺失自動釋放磁盤空間 - 在需要時。這通常不是一個好主意(也不是真的需要)來「壓縮」數據庫或索引文件 - 只是讓它成爲 - SQL Server將重用空間 –

+0

您是否擔心磁盤空間或只是一個更清潔的索引? – Pleun

+0

我並不十分擔心磁盤空間 - 我只是想要一種方法來壓縮身份索引,比如在數百萬次刪除(從現在起很長一段時間)之後,以便我們使用更少的int可用值。從下面的鏈接和我的記憶(最好是明顯有缺陷)我相信ALTER INDEX重建是我承諾過的後面的一行......「FACE-PALM」 –

回答

2

中的術語SQL是Reorganizing and Rebuilding Indexes,每個命令的命令是:

ALTER INDEX REORGANIZE 

ALTER INDEX REBUILD 

但是按照對鏈接開行「的SQL Server 2005數據庫引擎會自動維護,只要插入,更新或刪除操作對基礎數據進行的指標。」所以就把它留給服務器吧。

+0

+1:它不是磁盤空間... – Pleun

-1

除非你真的熱衷於最小化磁盤空間,否則不要這樣做,但也許你正在使用快遞並接近大小限制?

無論如何,這樣你可以壓縮你的數據庫:

DBCC SHRINKFILE 
    (
    { file_name | file_id } 
    { [ , EMPTYFILE ] 
    | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ] 
    } 
) 
[ WITH NO_INFOMSGS ] 
+0

這不會壓縮索引。 –

+0

就像我說的,看起來(也看Marc的評論)OP正在尋找磁盤空間,而不是尋找新的索引。這將有助於解決磁盤空間問題,因爲我明確寫了這樣的downvoting有點過早,然後他回答我對原始問題的評論 – Pleun

+0

我不同意http://meta.stackexchange.com/q/112659/153199 –