1.索引的简介:
索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。
索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 。
但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引建少了,用 WHERE 子句找数据效率低,不利于查找数据。索引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQL SERVER 除了要更新数据表本身,还要连带立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间。
2.索引的分类:
索引就类似于中文字典前面的目录,按照拼音或部首都可以很快的定位到所要查找的字。
非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点:
1. 基础表的数据行不按非聚集键的顺序排序和存储。
2. 非聚集索引的叶层是由索引页而不是由数据页组成。
3.创建索引:
--创建聚集索引 create clustered index Clu_Index on Student(S_StuNo) with (drop_existing=on) --创建非聚集索引 create nonclustered index NonClu_Index on Student(S_StuNo) with (drop_existing=on) --创建唯一索引 create unique index NonClu_Index on Student(S_StuNo) with (drop_existing=on)
4.修改索引:
--修改索引语法 ALTER INDEX { 索引名| ALL } ON <表名|视图名> { REBUILD | DISABLE | REORGANIZE }[ ; ]
5.禁用索引:
--禁用名为 NonClu_Index 的索引 alter index NonClu_Index on Student disable
6.删除、查看和更新索引:
--查看指定表 Student 中的索引 exec sp_helpindex Student --删除指定表 Student 中名为 Index_StuNo_SName 的索引 drop index Student.Index_StuNo_SName --检查表 Student 中索引 UQ_S_StuNo 的碎片信息 dbcc showcontig(Student,UQ_S_StuNo) --整理 Test 数据库中表 Student 的索引 UQ_S_StuNo 的碎片 dbcc indexdefrag(Test,Student,UQ_S_StuNo) --更新表 Student 中的全部索引的统计信息 update statistics Student
7.使用索引的代价:
8.创建索引的原则:
原文:https://www.cnblogs.com/yuqingya/p/14004977.html