标签归档:索引启用

mssql sqlserver 启用索引的方法分享


摘要:
下文讲述启用被禁用的索引的方法,如下所示:
实验环境:sql server 2008 R2



索引被禁用后一直保持着禁用状态,当我们重新生成索引,索引才会得到启用。
———-注意事项——————
由于聚集索引禁用而被自动禁用的关联索引和关联约束,我们都需手动重新启用。

禁用索引启用方法:
1. alter index all rebuild
2. 创建一个聚集索引-将会自动将此聚集索引下表的其它索引变为启用状态
3. 使用 DBCC DBREINDEX启用表上索引
4. 使用SSMS管理器启用禁用的索引
4.1 在对象资源管理器中,单击加号以便展开包含您要启用索引的表的数据库。
4.2 单击加号以便展开 “表” 文件夹。
4.3 单击加号以便展开您要启用索引的表。
4.4 右键单击“索引”文件夹,然后选择“全部重新生成”。
4.5 在 “重新生成索引” 对话框中,确认正确的索引位于 “要重新生成的索引” 网格中,
然后单击 “确定”。 若要从 “要重新生成的索引” 网格中删除索引,请选择该索引,再按 Delete 键。


—1 使用rebuild启用索引
USE [数据库名称];
GO
ALTER INDEX [索引名称] ON [索引所属对象名称]
REBUILD;
GO
—2 使用创建索引的方式 启用索引

USE [数据库名称];
GO

CREATE INDEX [索引名称] ON [索引所属对象名称]
(索引列1, 索引列2…)
WITH (DROP_EXISTING = ON);
GO

—3 使用 DBCC DBREINDEX 启用指定索引
USE [数据库名称];
GO

DBCC DBREINDEX (“索引所属对象名称”, 索引名称);
GO

—4 启用指定对象上的所有索引
USE [数据库名称];
GO
–例:开启表testTableName上的索引索引
ALTER INDEX ALL ON testTableName
REBUILD;
GO

—5 使用 DBREINDEX 开启指定对象上的所有索引

USE [数据库名称];
GO
—例开启对象名testTableName上的所有索引
DBCC DBREINDEX (“testTableName”, ” “);
GO

在SQL Server 2005和SQL Server 2008禁用和启用索引的方法分享


摘要:
在查看SQL Server 2005和SQL Server 2008中的新功能时,
我们在索引上点击右键时,发现了一个“禁用”按钮,表示该索引可用于禁用表或视图上的索引。
下文将着重讲述此禁用索引的操作方法


数据库管理员可以使用SQL Server 2005及更高版本中提供的禁用索引功能来防止用户查询使用索引。
这个功能对于DBA来说非常有用,因为他们需要弄清楚表上的索引是否真的有用。
禁用索引时,索引定义保留在元数据中,
而索引统计信息也保存在非聚簇索引中。
但是,禁用视图上的聚簇索引或非聚簇索引会物理删除索引数据。
—————————————————————————–
如果您在表上禁用聚簇索引,那么表将不可用于用户访问,但数据仍将保留在表中,但在重建或删除索引之前,它将不可用于任何DML操作。
—————————————————————–

我们可以使用
ALTER INDEX REBUILD
CREATE INDEX WITH DROP_EXISTING
来启用禁用的索引。

例1:使用sql脚本禁用索引

 
 ---禁用 AdventureWorks数据库中的Person.Address表上IX_Address_StateProvinceID索引

USE AdventureWorks 
GO 
ALTER INDEX IX_Address_StateProvinceID ON Person.Address DISABLE 
GO 
-- 查询索引的使用情况
SELECT NAME AS [IndexName], TYPE_DESC AS [IndexType], 
CASE IS_DISABLED  
WHEN 0 THEN 'Enabled' 
ELSE 'Disabled'  
END AS [IndexUsage],  
FILL_FACTOR AS [FillFactor] FROM SYS.INDEXES 
WHERE OBJECT_ID = OBJECT_ID('Person.Address') ORDER BY IndexName, IndexUsage 
GO

方法2: 使用SQL Server Management Studio(SSMS)禁用索引

打开数据库AdventureWorks表的对象资源管理器,
找到 Person.Address ,
展开索引并右键单击IX_Address_StateProvinceID(非唯一,非集群)
从下拉列表中选择”禁用”


启用索引的方法分享

方法1:使用sql脚本启用禁用的索引

USE AdventureWorks 
GO 
ALTER INDEX IX_Address_StateProvinceID ON Person.Address REBUILD 
GO

方法2: 带DROP_EXISTING语句的CREATE INDEX启用索引

USE AdventureWorks 
GO 
CREATE NONCLUSTERED INDEX [IX_Address_StateProvinceID] ON [Person].[Address]  
( 
[StateProvinceID] ASC 
)WITH (DROP_EXISTING = ON, FILLFACTOR = 80) ON [PRIMARY] 
GO

方法3:通过ssms管理工具启用索引

打开数据库AdventureWorks表的对象资源管理器,
找到 Person.Address ,
展开索引并右键单击IX_Address_StateProvinceID(非唯一,非集群)
从下拉列表中选择”启用”