1、索引(index):索引是为了提高数据检索的性能而建立的,利用它可快速的确定指定的信息。索引分为:B-Tree Index(最常用)、全局或局部索引、位图索引(Bitmap Index)、函数索引、反向键索引、键压缩索引、分区索引。
索引通常能提高select/update/delete的性能,会降低insert的速度。
1.1)B-Tree Index:B树索引是一个典型的树结构。
其包含的组件主要是:
叶子节点(Leaf node):包含条目直接指向表里的数据行;
分支节点(Branch node):包含的条目指向索引里其他的分支节点或者是叶子节点; 根节点(Root node):一个B树索引只有一个根节点,它实际就是位于树的最顶端 的分支节点。
按照存储结构的不同可分为簇索引(clustered index)和非簇索引(nonclustered index);
1.1.1) 簇索引:对表的物理 中的数据按列排序,再重新存储在磁盘上。簇索引查找数据很快,但占磁盘的空间也很大;
创建索引的语句:;create[unique][clustered;[with[pad_index],[[fillf;[sort_in_tempdb]][onfile;其中;Unique:创建唯一索引,及索引的键值不重复;Clustered:簇索引;;Pad_index:指定填充索引快,但占磁盘的空间也很大。
1.1.2)非簇索引:将行定位器按关键字的值用一定的方式排序,与表的行在数据页的排序是不匹配的。一个表可以建立很多非簇索引,但只能建立一个簇索引。
创建索引的语句:
create [unique] [clustered|nonclustered] index index_name on {table|view} (column[asc|desc])
[with [pad_index], [[fillfactor=fillfactor], [ignore_dup_key], [drop_existing], [statistics_norecompute],
[sort_in_tempdb]][on filegroup]
其中
Unique:创建唯一索引,及索引的键值不重复。
Clustered:簇索引;
Pad_index:指定填充索引的内部节点的行数,至少应大于等于两行;
Fillfactor:填充因子,指定创建索引时,每个索引页的数据占索引页大小的百分比;
Ignore_dup_key:控制了当向包含于一个唯一约束中的列中插入重复数据时数据库所做的反应;
Drop_existing:指定要删除并重新创建簇索引。删除簇索引会导致所有的非簇索引被重建; Statistics_norecompute:指定分布统计不自动更新 ;
Sort_in_ tempdb:指定用于创建索引的分类排序结果将被存储到tempdb数据库中; On filegroup:指定存放索引的文件组。