关于 索引 的简单整理
分类:
聚集索引(CLUSTERED) 和非聚集索引(NONCLUSTERED) 语法上还分唯一(UNIQUE)索引和非唯一(复合)索引
建立/ 查看/删除/改名 索引:
一般的 在主键约束下 都会为主表构建唯一的聚集索引(物理排序 速度快 占空间),而要增加索引时要注意
新增的索引必须是经常查询有用的字段 例如经常以名字Name字段 查询,则创建一个不唯一的 非聚集索引 更为合理
例:
 //建立
//建立
 //
//
 USe DB_Name
USe DB_Name
 go
go
 create [Unique] [Clustered / nonClusterd ]
create [Unique] [Clustered / nonClusterd ]
 index ix_Name on Table_Name
index ix_Name on Table_Name
 go
go


 //删除
//删除
 //
//
 Drop index Table_Name.ix_Name
Drop index Table_Name.ix_Name


 //查看表的所有索引
//查看表的所有索引
 //
//
 EXEC sp_helpIndex Table_name
EXEC sp_helpIndex Table_name

 //改索引名
//改索引名
 //
//
 EXEC sp_rename 'Table_name.IX_OldName','IX.NewName'
EXEC sp_rename 'Table_name.IX_OldName','IX.NewName'
分析:
用ShowPlan_all命令分析查询语句引用的索引
例
 Use DB_name
Use DB_name
 go
go
 set ShowPlan_All ON
set ShowPlan_All ON
 go
go 
 select * from Table_name where Name='LALA'
select * from Table_name where Name='LALA'
 go
go
 SET ShowPlan_All OFF
SET ShowPlan_All OFF
 go
go
 Use DB_name
Use DB_name
 go
go
 update STATISTICS Table_name IX_Name
update STATISTICS Table_name IX_Name
 go
go
来更新指定索引的统计信息。
也可通过DBCC ShowConfig 语句获取数据库的表索引的碎片信息而进一步用DBCC IndexDefrag整理碎片
例
 Use DB_Name
Use DB_Name
 go
go
 DBCC ShowConfig (Table_Name,Ix_Name)
DBCC ShowConfig (Table_Name,Ix_Name)
 go
go

 =====
=====

 DBCC IndexDeFrag (DB_Name,Table_Name,IX_Name)
DBCC IndexDeFrag (DB_Name,Table_Name,IX_Name)
 go
go
PS:应避免频繁的进行索引统计更新 在数据库操作比较频繁时更应避免
  
聚集索引(CLUSTERED) 和非聚集索引(NONCLUSTERED) 语法上还分唯一(UNIQUE)索引和非唯一(复合)索引
建立/ 查看/删除/改名 索引:
一般的 在主键约束下 都会为主表构建唯一的聚集索引(物理排序 速度快 占空间),而要增加索引时要注意
新增的索引必须是经常查询有用的字段 例如经常以名字Name字段 查询,则创建一个不唯一的 非聚集索引 更为合理
例:
 //建立
//建立 //
// USe DB_Name
USe DB_Name go
go create [Unique] [Clustered / nonClusterd ]
create [Unique] [Clustered / nonClusterd ] index ix_Name on Table_Name
index ix_Name on Table_Name go
go

 //删除
//删除 //
// Drop index Table_Name.ix_Name
Drop index Table_Name.ix_Name

 //查看表的所有索引
//查看表的所有索引 //
// EXEC sp_helpIndex Table_name
EXEC sp_helpIndex Table_name
 //改索引名
//改索引名 //
// EXEC sp_rename 'Table_name.IX_OldName','IX.NewName'
EXEC sp_rename 'Table_name.IX_OldName','IX.NewName'分析:
用ShowPlan_all命令分析查询语句引用的索引
例
 Use DB_name
Use DB_name go
go set ShowPlan_All ON
set ShowPlan_All ON go
go  select * from Table_name where Name='LALA'
select * from Table_name where Name='LALA' go
go SET ShowPlan_All OFF
SET ShowPlan_All OFF go
go 用 Statistics IO 命令查看数据索引花费的磁盘活动量 显示SQLserver的 IO占用信息
同上用法 Set Stajtistics ON | OFF 
维护:
通过数据库属性页钩好自动更形统计信息选项来让系统自动更新选项信息,也可手动Update Statistics,
例
 Use DB_name
Use DB_name go
go update STATISTICS Table_name IX_Name
update STATISTICS Table_name IX_Name go
go来更新指定索引的统计信息。
也可通过DBCC ShowConfig 语句获取数据库的表索引的碎片信息而进一步用DBCC IndexDefrag整理碎片
例
 Use DB_Name
Use DB_Name go
go DBCC ShowConfig (Table_Name,Ix_Name)
DBCC ShowConfig (Table_Name,Ix_Name) go
go
 =====
=====
 DBCC IndexDeFrag (DB_Name,Table_Name,IX_Name)
DBCC IndexDeFrag (DB_Name,Table_Name,IX_Name) go
goPS:应避免频繁的进行索引统计更新 在数据库操作比较频繁时更应避免
posted on 2006-01-07 05:50 Royman.Chen 阅读(1976) 评论(0) 收藏 举报
 
                    
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号