SQL Server索引简单总结

上一篇 / 下一篇  2008-11-10 17:25:43 / 个人分类:SQL

      SQL Server中索引属于SQL Server对象的一种,其最主要的目的是加快查询速度。原本需要100秒的查询在加了索引后可能会降低到10秒以下。
      索引分为2类,一类是聚集索引(clustered index),另一类是非聚集索引(nonclustered index),其中加了聚集索引的表是只指按照一定顺序排列的表,而这个顺序就是一个聚集索引,当为一个table的一个column加上聚集索引后,就相当与为这个table做一个排序,而排序的规则就是按照这个column。而非聚集索引则相当与在聚集索引中加了一道,如果为一个table的多个column加了非聚集索引后,就相当与为这个table做了多个排序方式,如果要找到某个值,就要先找到一个排序方式,然后再来找到需要的内容。
      为一个表建立一个主键后,聚集索引会自动加到这个主键上,而通常这个并不是最好的方式,正确的方式是加到一些经常被用来查询的字段。通常只要加了索引后,查询速度都能得到显著的提高,而且聚集索引在数据量小的情况下也远比非聚集索引要快的多,一个好的方式是在每段查询语句后面加上一个函数:
        declare @d datetime
set @d=getdate()
select [语句执行的毫秒数]=datadiff(ms,@d,getdate());
      建立/删除聚集及非聚集索引的SQL语句:
  • DROP INDEX mytable.mycolumn_index
  • CREATE INDEX mycolumn_index ON mytable (myclumn)
  • CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH ALLOW_DUP_ROW
  • CREATE INDEX name_index ON username(firstname,lastname)
      还有一个复合的聚集索引,就是将多个字段连在一个组合成一个非聚集索引,作为主索引的复合聚集索引同样会对速度带来提升。
      索引有助于提高检索性能,但过多或不当的索引也会导致系统低效。因为用户在表中每加进一个索引,数据库就要做更多的工作。过多的索引甚至会导致索引碎片。
      

TAG: SQL

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-23  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 17656
  • 日志数: 25
  • 文件数: 5
  • 建立时间: 2007-12-25
  • 更新时间: 2012-09-11

RSS订阅

Open Toolbar