索引

索引可以创建在任意表和视图的列字段上,索引中包含键值,这些键值存储在一种数据结构(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。

原文地址:https://www.cnblogs.com/kuugachen/p/3550317.html