日期:2014-05-17  浏览次数:20571 次

重建索引
1.sqlserver2005有一个数据库abc,其中有一个表叫tblView,如何用sql语句重建tblView的索引
2.如何用sql压缩abc数据库
3.如何清除abc的数据库日志

------解决方案--------------------
1、打开SSMS→管理→维护计划→新建维护计划,名字随便→在左边的工具栏里面,把重建索引拉进去,双击→设置数据库→点击【查看T-SQL】就自动生成脚本了。
2、只有2008以后才有压缩,你应该是问【收缩】吧:
SQL code
USE [AdventureWorks]
 GO
 DBCC SHRINKDATABASE(N'AdventureWorks' )
 GO

------解决方案--------------------
SQL code
--1、create index 加上 with(drop_existing=on)选项
--例
CREATE NONCLUSTERED INDEX IX_WorkOrder_ProductID
ON Production.WorkOrder(ProductID)
WITH (DROP_EXISTING = ON);

--2、dbcc shrinkfile 和 dbcc shrinkdatabase

--3
--<1>.清空日志 
DUMP     TRANSACTION     库名     WITH     NO_LOG         
--<2>.截断事务日志: 
BACKUP   LOG   库名   WITH   NO_LOG

------解决方案--------------------
SQL code
use abc
go

ALTER INDEX all on tblView
REBUILD;



--2,3  
DBCC SHRINKDATABASE 
DBCC SHRINKFILE

------解决方案--------------------
SQL code
--1、
(1)
DBCC DBREINDEX
    (    [ 'database.owner.table_name'    
            [ , index_name
                [ , fillfactor ]
            ] 
        ] 
    )    [ WITH NO_INFOMSGS ]
(2)
alter index indexname rebuild

------解决方案--------------------
DBCC DBREINDEX 用法
重建指定数据库中表的一个或多个索引。
语法
DBCC DBREINDEX
( [ 'database.owner.table_name'
[ , index_name
[ , fillfactor ]
]
]
)
参数
'database.owner.table_name'
是要重建其指定的索引的表名。数据库、所有者和表名必须符合标识符的规则。有关更多信息,请参见使用标识符。如果提供 database 或 owner 部分,则必须使用单引号 (') 将整个 database.owner.table_name 括起来。如果只指定 table_name,则不需要单引号。
index_name
是要重建的索引名。索引名必须符合标识符的规则。如果未指定 index_name 或指定为 ' ',就要对表的所有索引进行重建。
fillfactor
是创建索引时每个索引页上要用于存储数据的空间百分比。fillfactor 替换起始填充因子以作为索引或任何其它重建的非聚集索引(因为已重建聚集索引)的新默认值。如果 fillfactor 为 0,DBCC DBREINDEX 在创建索引时将使用指定的起始 fillfactor。
同样在Query Analyzer中输入命令:
dbcc dbreindex('database_name.dbo.Employee','',90)
然后再用DBCC SHOWCONTIG查看重构索引后的结果:
DBCC SHOWCONTIG scanning 'Employee' table...
Table: 'Employee' (1195151303); index ID: 1, database ID: 53
TABLE level scan performed.
- Pages Scanned................................: 178
- Extents Scanned..............................: 23
- Extent Switches..............................: 22
- Avg. Pages per Extent........................: 7.7
- Scan Density [Best Count:Actual Count].......: 100.00% [23:23]
- Logical Scan Fragmentation ..................: 0.00%
- Extent Scan Fragmentation ...................: 0.00%
- Avg. Bytes Free per Page.....................: 509.5
- Avg. Page Density (full).....................: 93.70%
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
通过结果我们可以看到Scan Denity为100%。
******