索引:类似于一本书的目录,合理使用索引,在一定程度上是可以加快数据处理速度最普遍的优化方法, 前提是你的sql语句本身已经优化加工过.
1.首先说下sqlserver的索引类型
唯一索引(UNIQUE INDEX): 由系统自动创建唯一约束,不允许其中任意两行具有相同索引值,只能对定义为NOT NULL的列创建唯一索引
主键索引(PRAMARY KEY INDEX):创建主键则自动创建主键索引(主键中的每个值必须是唯一的)
聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引
非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引
2.使用索引就一定会使查询变快吗?
NONONO,索引的使用也是有前提条件的,
区分条件:
1> 根据表数据大小创建索引
小数据量的表不需要创建索引,因为索引查询开销也是很大的,维护起来也比较麻烦.
大数据量的表需要考虑一下两个方面:
#1 表的使用频率,不常用的表不需要建立索引
#2 查询的数据量大小,如果查询量很小就不需要建立索引
2> 根据列的特征建立索引
#1是否是频繁查询列
#2是否频繁被分组排序(GROUP BY , ORDER BY)
#3是否是外键列
3.一张表索引越多,查询速度就越快?
当然不会,一张表建立多少索引合适,还取决于这张表的属性,是否属于频繁更新的表,如果一张表记录不怎么更新,那么索引的建立会提高数据库的查询性能,相反,经常被更新记录的表,如果索引过多,则会影响该表的更新速度,所以必须限制索引数量,只在必要的字段上加上索引即可.