SQL Server: 索引禁用、启用状态对比测试
来源:互联网 发布:升调降调软件 编辑:程序博客网 时间:2024/06/02 23:35
索引禁用备注:
1. 索引禁用会释放空间, 所以索引禁用只是保留了逻辑结构, 禁用再启用与新建索引都是申请新空间, 时间上差别不会太大(稍快一点);
2. 聚集索引不能禁用, 否则select, insert 之类的操作都无法完成。提示:
查询处理器无法生成计划,因为表或视图 'xxx' 的索引 'PK_xxx' 被禁用。
脚本:
--创建新表 dbo.Person , 不影响原来的表 Person.PersonSET NOCOUNT ONIF OBJECT_ID('dbo.Person') IS NOT NULLBEGINDROP TABLE dbo.PersonENDGOCREATE TABLE dbo.[Person]([BusinessEntityID] [int] NOT NULL,[PersonType] [nchar](2) NOT NULL,[NameStyle] [dbo].[NameStyle] NOT NULL,[Title] [nvarchar](8) NULL,[FirstName] [dbo].[Name] NOT NULL,[MiddleName] [dbo].[Name] NULL,[LastName] [dbo].[Name] NOT NULL,[Suffix] [nvarchar](10) NULL,[EmailPromotion] [int] NOT NULL,[AdditionalContactInfo] [xml](CONTENT [Person].[AdditionalContactInfoSchemaCollection]) NULL,[Demographics] [xml](CONTENT [Person].[IndividualSurveySchemaCollection]) NULL,[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL,[ModifiedDate] [datetime] NOT NULL,CONSTRAINT [PK_Person_BusinessEntityID_1] PRIMARY KEY CLUSTERED ([BusinessEntityID] ASC)) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GOINSERT INTO dbo.[Person] ([BusinessEntityID] ,[PersonType] ,[NameStyle] ,[Title] ,[FirstName] ,[MiddleName] ,[LastName] ,[Suffix] ,[EmailPromotion] ,[AdditionalContactInfo] ,[Demographics] ,[rowguid] ,[ModifiedDate]) SELECT [BusinessEntityID] ,[PersonType] ,[NameStyle] ,[Title] ,[FirstName] ,[MiddleName] ,[LastName] ,[Suffix] ,[EmailPromotion] ,[AdditionalContactInfo] ,[Demographics] ,[rowguid] ,[ModifiedDate] FROM Person.Person AS pGO--创建索引CREATE NONCLUSTERED INDEX [IX_Person_LastName_FirstName_MiddleName2] ON dbo.[Person]([LastName] ASC,[FirstName] ASC,[MiddleName] ASC)GO--------------------- 索引开启的情况下执行查询、删除 -------------------------查看索引是否禁用SELECT OBJECT_ID,OBJECT_NAME(i.[object_id]) AS tableName, NAME, i.is_disabled FROM sys.indexes AS i WHERE i.[object_id]=OBJECT_ID('dbo.Person')/*1607676775PersonPK_Person_BusinessEntityID_101607676775PersonIX_Person_LastName_FirstName_MiddleName20*/--开启执行计划,查看SELECT * FROM [dbo].[Person] p WHERE lastName='Tamburello'GO--开启执行计划,删除DELETE FROM dbo.Person WHERE lastName='Tamburello' --------------------- 索引关闭的情况下执行查询、删除 -------------------------禁用索引ALTER INDEX [IX_Person_LastName_FirstName_MiddleName2] ON [dbo].[Person] DISABLEGO--查看索引是否禁用SELECT OBJECT_ID,OBJECT_NAME(i.[object_id]) AS tableName, NAME, i.is_disabled FROM sys.indexes AS i WHERE i.[object_id]=OBJECT_ID('dbo.Person')/*OBJECT_IDtableNameNAMEis_disabled1607676775PersonPK_Person_BusinessEntityID_101607676775PersonIX_Person_LastName_FirstName_MiddleName21*/--开启执行计划,查看SELECT * FROM [dbo].[Person] p WHERE lastName='Galvin' --开启执行计划,删除DELETE FROM dbo.Person WHERE lastName='Galvin' --重生成索引(启用索引)ALTER INDEX [IX_Person_LastName_FirstName_MiddleName2] ON [dbo].[Person] REBUILD--查看索引是否禁用SELECT OBJECT_ID,OBJECT_NAME(i.[object_id]) AS tableName, NAME, i.is_disabled FROM sys.indexes AS i WHERE i.[object_id]=OBJECT_ID('dbo.Person')/*OBJECT_IDtableNameNAMEis_disabled1607676775PersonPK_Person_BusinessEntityID_101607676775PersonIX_Person_LastName_FirstName_MiddleName20*/
1 0
- SQL Server: 索引禁用、启用状态对比测试
- SQL Server 临时禁用和启用所有外键约束
- SQL Server 临时禁用和启用所有外键约束
- SQL Server 临时禁用和启用所有外键约束
- SQL SERVER 2008 禁用或启用外键约束
- SQL Server 对比两个数据库的索引
- SQL Server 更新所有作业状态为禁用的脚步
- 检测网卡状态(禁用,启用)
- jquery textarea 启用、禁用 判断状态
- SQL SERVER整理索引碎片测试
- SQL Server 禁用外键约束和启用外键约束及删除表数据
- 对比SQL SERVER,ORACLE,DB2上的索引建立语句!
- SQL Server,Oracle,DB2索引建立语句的对比
- SQL SERVER 插入大批量数据有无索引的效率对比
- SQL Server,Oracle,DB2索引建立语句的对比
- 对比SQL SERVER,ORACLE,DB2上的索引建立语句!
- 不同版本SQL SERVER备份还原时造成索引被禁用
- 如何修改SpriteBuilder中的按钮禁用启用状态
- Android AsyncTask 使用时需要注意的地方
- std::less()用法及分析分析
- 信息学奥林匹克竞赛-陶陶摘苹果
- 使用Struts2简单的基本文件上传下载实现
- android RootTooles 分享
- SQL Server: 索引禁用、启用状态对比测试
- jstl 的<c:if>标签没有else的解决办法
- Git 常用命令整理
- c++11线程安全的队列的类的定义
- 在ubuntu中安装jdk以及环境配置
- [Mysql数据库] 每天自动备份mysql脚本
- c++ friend functions and inline functions
- AndroidStudio快捷键Editing
- C++ math库函数