1.什么是索引?
索引是以表列为基础的数据库对象,保存着表中排序的索引列,并且记录了索引列在表中的物理存储位置,实现了表中数据的逻辑排序。
2.索引的用途?
1)加快数据的查询速度,减少系统的响应时间。
2)加快表和表之间的连接速度。
3.使用索引的代价?
1)一定的物理空间开销。
2)创建和维护需要消耗时间,增删改操作时,索引会进行维护。
4.索引使用的原则?
1)设为主键的列一定要设置为索引,可以加快主键的定位速度。
2)定义有外键的列一定要设为索引,可以加快表之间的连接速度。
3)对于经常查询的列最好建立索引,可以明显加快查询的速度。
4)对于数据重复严重的列,查询很少涉及的列,不要建立索引。
5)对于text,image,bit类型的列不要建立索引,这些列要不很大要不太小。
5.索引分类?
索引主要分成三类,聚集索引,非聚集索引,唯一索引。
1)聚集索引:只会对表和视图进行物理排序。一个表或者视图只能有一个聚集索引,一般为主键列。
2)非聚集索引:不会对表和视图进行物理排序,表或者视图最多只能有250个非聚集索引。
3)唯一索引:不允许索引有重复的索引值,
6.索引的建立和删除。
1)索引的建立: create unique [clustered] index ix_bookid on book (bookid Asc)
注意事项:可以为聚集和非聚集索引建立unique索引。
2)索引是删除:drop index book.ix_bookid
注意事项:无法删除unique和primary key 约束的索引,除非先删除这些约束。
7.索引的相关操作?
1)显示索引信息:exec sp_helpindex students
2)重命名索引: exec sp_rename students.ix_bookid,students.ix_id
3)分析索引:主要采用两种方式,查看查询计划,和查询磁盘读取次数。
4)索引的维护:主要采用
1,统计信息更新 update statistics students lx_id
2,dbcc showcontig(students,ix_id)扫描表
3,使用dbcc indexdefrag(stu,students,ix_id)进行碎片整理。