数据库的类似于图书的目录,索引允许数据库程序的查找数据库中的数据,而不必扫描这个数据库.
SQL server 中管理的最小单位是页,为8K的空间.数据的存放是没有逻辑顺序的,成为,当数据堆满一些,数据库就存放打另外一页.
索引可以提供系统的性能.
1. 唯一索引可以保证行的唯一
2. 加快检索速度
3. 加速表之间的连接,实现数据的参照完整性
4. order by/group by
5. 使用索引进行查询的过程使用优化隐藏器,提供系统性能
但是索引的创建和维护耗费时间,索引需要占用物理空间,当表进行insert,update,delete操作时,需要堆index进行维护,降低了数据库的维护速度.
创建索引的原则
1. 在经常进行搜索的列上创建
2. 主键
3. 外键
4. 进行排序的列上
5. 需要根据范围进行搜索的列上
6. 用于where子句的列上
不创建索引的原则:
1. 在查询中很少用到和参考的列
2. 值很少的列
3. 定义为text,image,bit的列
4. 需要update的性能要求大于对select的性能要求.
索引类型:
1. 聚簇索引:数据库表的物理顺序和索引的顺序相同
a) 树状结构,叶子结点为数据页
b) 每个表只有一个
c) 表的物理顺序和索引行的物理顺序相同
d) unique
e) 平均大小为表的5%
f) 创建索引时临时使用当前数据库的磁盘空间,聚簇所需的临时空间是表的1.2倍
2. 非聚簇索引:不同的
a) 缺省情况下为非聚簇
b) 一个表最多为249
c) 索引页只包含索引的关键字,不包含实际数据