索引可以创建在任意表和视图的列字段上,索引中包含键值,这些键值存储在一种数据结构(B-树)中,通过键值可以快速地找到与键值相关的数据记录。
SQL Server 提供了两种形式的索引, 即聚集索引(Clustered ) 和非聚集索引(Nonclustered)。聚集索引根据键的值对行进行排序,所以每个表只能有一个聚集索引。
非聚集索引不根据键值排序,索引数据结构与数据行是分开的。由于非聚集索引的表没有按顺序进行排列,所以查找速度明显低于带聚集索引的表。SQL Server 2008 提供的索引
型具体包括以下几种。
聚集索引:根据索引的键值,排序表中的数据并保存。
非聚集索引:索引的键值包含指向表中记录存储位置的指针,不对表中数据排序,只对键值排序。
唯一索引:保证索引中不含有相同的键值,聚集索引和非聚集索引都可以是唯一索引。
包含列的索引:一种非聚集索引,其中包含一些非键值的列,这些列对键值有辅助作用。
全文(full-text)索引:由Microsoft 全文引擎(full-text engine)创建并管理的一种基于符号的函数(token-based functional)索引,支持快速地字符串中单词的查找。
XML 索引:XML 数据列中的XML 二进制大对象(BLOBs)。索引的建立有利也有弊,建立索引可以提高查询速度,但过多地建立索引会占据很多的磁盘空间。所以在建立索引时,数据库管理员必须权衡利弊,考虑让索引带来的有利效果大于带来的弊病。
索引的建立有利也有弊,建立索引可以提高查询速度,但过多地建立索引会占据很多的磁盘空间。所以在建立索引时,数据库管理员必须权衡利弊,考虑让索引带来的有利效
果大于带来的弊病。下列情况适合建立索引:
经常被查询搜索的列,如经常在WHERE 子句中出现的列。
在ORDER BY 子句中使用的列。
外键或主键列。
值唯一的列。
下列情况不适合建立索引:
在查询中很少被引用的列。
包含太多重复值的列。
数据类型为bit、text、image 等的列不能建立索引。
参考:零点起飞学sql。