关于 索引 的简单整理
分类:
聚集索引(CLUSTERED) 和非聚集索引(NONCLUSTERED) 语法上还分唯一(UNIQUE)索引和非唯一(复合)索引
建立/ 查看/删除/改名 索引:
一般的 在主键约束下 都会为主表构建唯一的聚集索引(物理排序 速度快 占空间),而要增加索引时要注意
新增的索引必须是经常查询有用的字段 例如经常以名字Name字段 查询,则创建一个不唯一的 非聚集索引 更为合理
例:
分析:
用ShowPlan_all命令分析查询语句引用的索引
例
来更新指定索引的统计信息。
也可通过DBCC ShowConfig 语句获取数据库的表索引的碎片信息而进一步用DBCC IndexDefrag整理碎片
例
PS:应避免频繁的进行索引统计更新 在数据库操作比较频繁时更应避免
聚集索引(CLUSTERED) 和非聚集索引(NONCLUSTERED) 语法上还分唯一(UNIQUE)索引和非唯一(复合)索引
建立/ 查看/删除/改名 索引:
一般的 在主键约束下 都会为主表构建唯一的聚集索引(物理排序 速度快 占空间),而要增加索引时要注意
新增的索引必须是经常查询有用的字段 例如经常以名字Name字段 查询,则创建一个不唯一的 非聚集索引 更为合理
例:
//建立
//
USe DB_Name
go
create [Unique] [Clustered / nonClusterd ]
index ix_Name on Table_Name
go
//删除
//
Drop index Table_Name.ix_Name
//查看表的所有索引
//
EXEC sp_helpIndex Table_name
//改索引名
//
EXEC sp_rename 'Table_name.IX_OldName','IX.NewName'
//
USe DB_Name
go
create [Unique] [Clustered / nonClusterd ]
index ix_Name on Table_Name
go
//删除
//
Drop index Table_Name.ix_Name
//查看表的所有索引
//
EXEC sp_helpIndex Table_name
//改索引名
//
EXEC sp_rename 'Table_name.IX_OldName','IX.NewName'
分析:
用ShowPlan_all命令分析查询语句引用的索引
例
Use DB_name
go
set ShowPlan_All ON
go
select * from Table_name where Name='LALA'
go
SET ShowPlan_All OFF
go
go
set ShowPlan_All ON
go
select * from Table_name where Name='LALA'
go
SET ShowPlan_All OFF
go
用 Statistics IO 命令查看数据索引花费的磁盘活动量 显示SQLserver的 IO占用信息
同上用法 Set Stajtistics ON | OFF
维护:
通过数据库属性页钩好自动更形统计信息选项来让系统自动更新选项信息,也可手动Update Statistics,
例
Use DB_name
go
update STATISTICS Table_name IX_Name
go
go
update STATISTICS Table_name IX_Name
go
来更新指定索引的统计信息。
也可通过DBCC ShowConfig 语句获取数据库的表索引的碎片信息而进一步用DBCC IndexDefrag整理碎片
例
Use DB_Name
go
DBCC ShowConfig (Table_Name,Ix_Name)
go
=====
DBCC IndexDeFrag (DB_Name,Table_Name,IX_Name)
go
go
DBCC ShowConfig (Table_Name,Ix_Name)
go
=====
DBCC IndexDeFrag (DB_Name,Table_Name,IX_Name)
go
PS:应避免频繁的进行索引统计更新 在数据库操作比较频繁时更应避免
posted on 2006-01-07 05:50 Royman.Chen 阅读(1968) 评论(0) 编辑 收藏 举报