数据库索引是什么?(what is Index)
索引是一种特殊的目录。是对数据库表中一列或多列的值进行排序的结构。像图书馆例子<字母序号书名>;字典例子<拼音/部首>等。
索引的作用是什么?(What Index Function)
加快对表中记录的查找定位或排序。
数据库索引分类是什么?(What Index Catalog)
第一类:聚集索引(clustered Index)
- 聚集索引(clustered Index)
- 表中行的物理顺序与键值的逻辑(索引)顺序相同,一个表只能包含一个聚集索引;
- 对于那些定义为text, image和bit数据类型的列不应该增加索引;
- 当修改性能远远大于检索性能时,不应该创建索引。
2.非聚类索引(nonclustered Index)
- 可以看作是一个含有聚集索引的表;
- 他只仅包含原表中非聚集索引的列和指向实际物理表的指针.
第二类:唯一索引(Unique Index)
1.唯一索引(Unique Index)
- 不允许其中任何两行具有相同索引值的索引。
- 唯一索引并不一定就是主键。
- 唯一索引允许为空值,但是不能被其他表引用为外键。
- 一个表可以有多唯一索引。
2.简单索引(Simple Index)
普通索引一般是在建表后再添加的索引。
第三类:主键索引(Primary Key Index)
- 主键是一种约束,主键创建后一定包括一个唯一索引。
- 主键可以被其他表引用为外键,但是唯一索引不可以。
- 一个表只能创建一个主键索引,主键列不允许为空值。
- 主键索引更适合那些不容易更改的唯一标识。如自动递增,车牌号,学生编号等。
- 在RPO模式下,主键索引的执行计划优先级要高于唯一索引。
注:
还有一些 全文索引、xml索引等等。
索引的优点是什么?(What Advantage)
1.索引是经过某种算法优化过的,可以大大加快数据的检索速度;
2.可以加速表和表之间的连接;
3.使用索引可以在查询的过程中,使用优化隐藏器,提高系统的性能。
索引的缺点是什么?(What Weakness)
1.增加了数据库的存储空间(物理空间);
2.在增删改数据时要花费较多的时间(因为索引也要随之更新);
3.创建索引和维护索引要耗费时间;
如何创建索引? (How Create Index)
语法:
create [unique][clustered | nonclustered] index index_name on {table_name | view_name} [with [index_property [1,...,n]]]注:
index_property:索引属性。
索引实例 (Index Exercises)
use TestSchool go1.转到当前所用数据库
if exists( select * from sysindexes where name = 'IX_Adress_Id') drop index IX_Adress_Id go2.判断是否已存在要创建的索引
create unique index IX_Adress_Id on Adress(Id asc) go3.创建Adre 列唯一索引
注: 升序建立索引
exec sp_helpindex Adress ;4.查询显示索引信息