日期:2014-05-16  浏览次数:20445 次

索引---最直接的切入点(MSSQL个人笔记之数据库优化之路 一)

索引和书的中的索引差不多意思,也就是书的目录。

1.聚集索引 :在聚集索引中,表中各行的物理顺序与键值的逻辑顺序相同。一个表中只可以有一个聚集索引。  如果表中有聚集索引,则该表为聚集表,如果没有则为堆的无序结构表。

2.非聚集索引:具有独立数据行的结构。包含非聚集索引键值,并且每个索引键值都有指向包含键值的数据行的指针。

创建索引

drop table tb
create table tb(id int,name varchar(50))
create unique clustered index  Clus_uniq_index_id on  dbo.tb (id)


查看索引

 

exec sp_helpindex tb


select * from sys.indexes where name='Clus_uniq_index_id'


修改索引

alter index Clus_uniq_index_id on tb disable

删除索引
DORP INDEX 表名.索引名

 

系统表连接查询

select o.name,i.name 
from sys.objects o 
join
 sys.indexes i
   on o.object_id=i.object_id 
    where o.name='tb'


    name            name                                                                                                               
    tb            Clus_uniq_index_id

 

统计信息是对索引的补充

     执行查询的时候,有时候查询优化器很难确定使用哪个索引,在sqlser中可以创建指定列或索引的数据分布情况统计信息,利用这个信息可以帮助sqlserver确定最佳的插叙计划。。

查看统计信息

select * from sys.stats s   
 join   
  sys.objects  o                                                                                   
on s.object_id=o.object_id
 where o.name='tb'



使用DBCC SHOW_STATISTICS命令

如下图,在执行DBCC SHOW_STATISTICS命令 有三个结果集。

第一个结果集合显示了统计信息名称,上次更新的统计信息的日期 表中记录的数量,统计信息的抽样行数,和所有索引列的平均长度。

第二个结果集合显示了 索引列前缀集使用的频繁性,。。。

第三个显示统计直方图的信息。。。

 

利用sp_autostats存储过程查看自动创建的统计信息

exec sp_autostats 'tb'


 

Global statistics settings for [ceshi]:
  Automatic update statistics: ON
  Automatic create statistics: ON
 
settings for table [tb]


Index Name                              AUTOSTATS                 Last Updated

[Clus_uniq_index_id]                ON                               2012-07-23 11:18:49.420

 

 创建统计信息

 统计信息是为优化查询提供参考依据,在创建索引的时候,系统自动创建了统计信息。

在数据插叙和数据操作的时候自动创