SQL SERVER数据库维护与重建索引

第一步:查看是否需要维护,查看扫描密度/Scan Density是否为100%

  1. declare @table_id int
  2. set @table_id=object_id(‘表名‘)
  3. dbcc showcontig(@table_id)

第二步:重构SQL Server数据库表索引

  1. dbcc dbreindex(‘表名‘,pk_索引名,100)

重做第一步,如发现扫描密度/Scan Density还是小于100%则重构表的所有索引,并不一定能达100%。

  1. dbcc dbreindex(‘表名‘,‘‘,100)

重建数据库所有表的索引

    USE My_Database; DECLARE @name varchar(100)

    DECLARE authors_cursor CURSOR FOR  Select [name]   from sysobjects where xtype=‘u‘ order by id

    OPEN authors_cursor

    FETCH NEXT FROM authors_cursor  INTO @name

    WHILE @@FETCH_STATUS = 0 BEGIN

    DBCC DBREINDEX (@name, ‘‘, 90)

   FETCH NEXT FROM authors_cursor     INTO @name END

    deallocate authors_cursor

参考:

DBCC SHOWCONTIG (Transact-SQL)    http://msdn.microsoft.com/zh-cn/library/ms175008(v=sql.90).aspx

DBCC DBREINDEX (Transact-SQL)       http://msdn.microsoft.com/zh-cn/library/ms181671(v=sql.90).aspx

时间: 2024-10-31 01:36:11

SQL SERVER数据库维护与重建索引的相关文章

[S]SQL SERVER数据库维护与重建索引

第一步:查看是否需要维护,查看扫描密度/Scan Density是否为100% declare @table_id int set @table_id=object_id('表名') dbcc showcontig(@table_id) 第二步:重构SQL Server数据库表索引 dbcc dbreindex('表名',pk_索引名,100) 重做第一步,如发现扫描密度/Scan Density还是小于100%则重构表的所有索引,并不一定能达100%. dbcc dbreindex('表名',

SQL Server和Oracle数据库索引介绍

SQL Server和Oracle数据库索引介绍 1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行. 表或视图可以包含以下类型的索引: 聚集索引 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行.索引定义中包含聚集索引列.每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序. 只有当表包含聚集索引

SQL Server里因丢失索引造成的死锁

原文:SQL Server里因丢失索引造成的死锁 在今天的文章里我想演示下SQL Server里在表上丢失索引如何引起死锁(deadlock)的.为了准备测试场景,下列代码会创建2个表,然后2个表都插入4条记录. 1 -- Create a table without any indexes 2 CREATE TABLE Table1 3 ( 4 Column1 INT, 5 Column2 INT 6 ) 7 GO 8 9 -- Insert a few record 10 INSERT IN

mysql,sql server,oracle 唯一索引字段是否允许出现多个 null 值?

最近一个项目,涉及到sql server 2008,因为业务需求,希望建立一个唯一索引,但是发现在sql server中,唯一索引字段不能出现多个null值,下面是报错信息: CREATE UNIQUE NONCLUSTERED INDEX weixin_openid_ui ON Users(weixin_openid); 因为发现对象名称 'dbo.Users' 和索引名称 'weixin_openid_ui' 有重复的键,所以 CREATE UNIQUE INDEX 语句终止.重复的键值为

程序员眼中的 SQL Server-非聚集索引能给我们带来什么?

 我不会说一些数据库概念,所以只能用做一些实践来理解概念的意义,以下应用场景中的用例是虚拟出来的,只是作为个人研究使用. 程序员应该有刨根问底的怪癖,虽然这是个数据库问题. 应用场景 有一个 Product 表,字段如下: 数据添加脚本: begin tran declare @index int set @index=0 while(@index<1000000) begin insert into [dbo].[Product]([Name],Remarks,ProviderID,[Ti

SQL Server下实现利用SQL Server Agent Job对索引重建实现Balance Load

昨天工作中遇到这样一个场景,有个项目需要把某台服务器下所有的表和索引都启用数据压缩(data_compression=page),已经启用了的表和索引就不需要再压缩一次了.统计一下后发现要运行的REBUILD INDEX代码多达上万条,而整个服务器上的所有需要压缩的数据库对象大小加起来估计接近1TB.这种情况下如果把所有工作都交给一条脚本来完成,估计整个周末都跑不完.那么我们的想法就是用多个SQL Server Agent Job来做完成这个任务,分配单位是表(也就是说把同一张表的所有索引重建任

Sql Server专题一:索引(上)

写在前面的废话:索引问题已经是老生常谈的问题,虽然被经常说起,但作为我来说,至今没有用过索引(很可怕吧),我作为MS-BI实施工程师居然没用过索引,说话自然没底气.之前对索引的了解停留在“知道”的地步上,随着时间的流逝感觉不真正将索引应用起来简直是渣渣!废话到此为止,开始索引专题,为了彻彻底底(我不是DBA,能将索引理解达到熟练使用即可,所以并不彻底)搞懂索引,从数据页学习吧!本篇主要来源MS的联机文档!      页和区系统结构 页:SQL Server中数据存储的基本单元便是页.为数据库中的

SQL Server 重新组织生成索引

标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引/统计信息 概述 无论何时对基础数据执行插入.更新或删除操作,SQL Server 数据库引擎都会自动维护索引.随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中(含有碎片).当索引包含的页中的逻辑排序(基于键值)与数据文件中的物理排序不匹配时,就存在碎片.碎片非常多的索引可能会降低查询性能,导致应用程序响应缓慢,所以在日常的维护工作当中就需要对索引进行检查对那些填充度很低碎片量大的索引进行重新生成或重新组织,但

SQL Server 创建和使用索引

创建索引: (1)在SQL Server Management Studio中,选择并右击要创建索引的表,从弹出菜单中选择“设计”,打开表设计器.右键单击表设计器,从弹出菜单中选择“索引/键”命令,打开“索引/键”对话框.对话框中列出了已经存在的索引,如下图所示. (2)单击“添加”按钮.在“选定的主/唯一键或索引”框显示系统分配给新索引的名称. (3)在“列”属性下选择要创建索引的列.可以选择多达16列.为获得最佳性能,最好只选择一列或两列.对所选的每一列,可指出索引是按升序还是降序组织列值.