数据库之索引
索引定义:索引是对数据库表中一列或多列的值进行排序的一种物理结构(非全文索引是以B-Tree结构来维护的,全文索引是一种特殊类型的基于标记的功能性索引,是由Microsoft SQL Server 全文引擎服务创建和维护),它由访表或视图中的一列或若干列值,以及这些列值的记录在数据表中存储位置的物理地址所组成。索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相对应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。
索引信息存放在索引页中,表中的数据存放在数据页中。
索引分类:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)、唯一索引、全文索引、XML索引等。
唯一索引:唯一索引不允许两行具有相同的索引值;
主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空;
聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个聚集索引;
非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于249个;
索引的优点:
1.大大加快数据的检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.加速表和表之间的连接;
4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
索引的缺点:
1.建立索引要花费时间和占用存储空间。
2.在插入,修改,删除数据行时,增加维护索引的开销。(因为每执行一次数据修改,都需要对索引进行维护)
建立索引的准则:
1.在主键上(创建主键的时候自动建立聚集索引)
2.在用于连接的列(外键)上
3.在经常用作查询条件的列上
4.在经常要排序的列上
何时可不考虑建立索引:
1.很少或从来不作为查询条件的列
2.在小表中的任何列
3.属于Text、Image、长度较大的Char,VarChar,Binary等数据的列
4.当修改的性能需求远大于查询的性能需求时,不要创建索引。
5.不在含有大量重复数据的列上建立索引。
聚集索引和非聚集索引的详情介绍请看园子里 蓝色听的聚集索引和非聚集索引详解 (zhuang)
本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名JetWu技术博客(包含链接),且不得用于商业目的。
如您有任何疑问或者授权方面的协商,请与我联系。