1.索引的概念
索引是一种特殊的数据库对象,它保存着数据表中排序的索引列,并且记录索引列在数据表中的物理存储位置,实现表中数据的逻辑排序。
当SQL Server执行一个语句,在数据表中根据指定的列值查找数据时,它能够识别该列的索引,并使用该索引快速查找该列值的所在行,这大大提高了数据的检索效率。如果该索引不存在,它会从表的第一行开始,逐行搜索指定的列值。
2.索引的设计原则
当创建数据库并优化其性能时,应该为数据查询所使用的列创建索引。不过,索引为提高性能所带来的好处却是有代价的,带索引的表在数据库中会占据更多的空间;另外,为了维护索引,对数据进行插入、更新、删除操作的命令所花费的时间会更长。
为表设计和创建索引时,要根据实际情况,认真考虑哪些列应该建立索引,哪些列不应该建立索引,一般应遵循下列原则。
●主键列一定要创建索引。
●外键列可以建立索引。
●在经常查询的字段上最好建立索引。(www.xing528.com)
●对于查询很少设计的列、重复值比较多的列不要建立索引。
●对于定义为text、image和bit数据类型的列不要建立索引。
3.索引的分类
在SQL Server 2005中的索引主要有以下两种类型。
(1)聚集索引
聚集索引指数据行的物理存储顺序和索引顺序完全相同。当为一个表的某列创建聚集索引时,表中的数据会按该列进行重新排序,然后再存储到磁盘上。因此,每个表只能创建一个聚集索引。聚集索引一般创建在经常搜索或者按顺序访问的列上。默认情况下,SQL-Server为主键约束自动创建聚集索引。
(2)非聚集索引
非聚集索引具有独立于数据行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。从非聚集索引中的索引行指向数据行的指针称为行定位器,行定位器的结构取决于数据页是存储在堆中还是聚集表中。对于堆,行定位器是指向行的指针;对于聚集表,行定位器是聚集索引键。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。