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)
还有一个复合的聚集索引,就是将多个字段连在一个组合成一个非聚集索引,作为主索引的复合聚集索引同样会对速度带来提升。
索引有助于提高检索性能,但过多或不当的索引也会导致系统低效。因为用户在表中每加进一个索引,
数据库就要做更多的
工作。过多的索引甚至会导致索引碎片。
相关阅读:
- 常用数据库连接 (gaoningning, 2008-10-16)
- 教你如何在SQL Server数据库中加密数据 (fishy, 2008-10-16)
- SQL Server与Oracle实施成本上的差异 (fishy, 2008-10-17)
- 完全优化MySQL数据库性能的八大巧方法 (fengyun32, 2008-10-18)
- SQL技巧 (王爬爬, 2008-10-21)
- SQL端口问题及其常见问题 (超越自我, 2008-10-21)
- 微软SQL Server 2008数据库中的新数据类型 (fishy, 2008-10-22)
- SQL注入攻击的网络分析及防御方法 (fishy, 2008-10-28)
- SQL Select语句的执行顺序 (biscuit, 2008-11-09)
- SQL常用的Function (biscuit, 2008-11-09)
收藏
举报
TAG:
SQL