2011-11-26 65 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 –