龙空技术网

SQL SERVER:索引概述及创建与使用(41)

梦幻63288 58

前言:

当前你们对“sqlserver数据库算法”大约比较关注,看官们都需要了解一些“sqlserver数据库算法”的相关资讯。那么小编也在网上网罗了一些关于“sqlserver数据库算法””的相关文章,希望各位老铁们能喜欢,你们快快来了解一下吧!

一、索引概述:

1、索引:是SQL编排数据的内部方法,为SQL SERVER提供了一种方法来编排查询数据。其作用是为提高数据库的检索速度,改善数据库的性能。

2、索引分类:

1)聚集索引:正文内容本身就是一种按照一定规划排列的目录称为“聚集索引",就相当于使用字典的拼音查找,因为聚集索引存储记录是物理上连续存在的,即拼音 a 过了后面肯定是 b 一样

2)非聚集索引:目录纯粹是目录,正文纯粹是正文的排序方式称为‘非聚集索引’,相当于使用字典的部首查找,非聚集索引是逻辑上的连续,物理存储并不连续。

3、建立索引的一般原则:

1)每个表只能创建一个聚集索引,但最多可创建249个非聚集索引;

2)在经常查询的字段上建立索引,TEXT、IMAGE和BIT数据类型的列上不要建立索引;

3)主键列必须建立索引,外键列可以建立索引;

4)重复值比较多,查询较少的列上不要建立索引。

二、索引创建与使用:

1、索引创建语法:

CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED]--注:[唯一 | 聚集 | 非聚集]

INDEX <索引名> ON <表名(列名)>

[WITH FILLFACTOR=X]--注:填充因子(系数),指定一个1-100之间的数,表示索引页填充的百分比

2、索引删除语法:

1)DROP INDEX <索引名> ON <表名>

2)DROP INDEX <表名.索引名>

3、查看索引语法:

1)使用视图查看:

USE <数据库名>

GO

SELECT * FROM SYSINDEXES WHERE NAME=<'索引名'>

2)使用存储过程查看:

USE <数据库名>

GO

EXEC sp_helpindex <表名>

4、例 :

1)为员工表Employee的地址E_Adree列创建非聚集索引

USE MyServerGOCREATE NONCLUSTERED INDEX IX_E_Adree ON Employee(E_Adree)WITH FILLFACTOR=30GO

2)使用索引查询员工地址为四川的有哪些?

USE MyServerGOSELECT * FROM Employee WITH (INDEX=IX_E_Adree) WHERE E_Adree LIKE '%四川%'GO

3)删除索引

USE MyServerGODROP INDEX Employee.IX_E_AdreeGO

4)查看索引

--使用视图的方法:USE MyServerGOSELECT * FROM SYSINDEXES WHERE NAME='IX_E_Adree'GO--使用存储过程的方法:USE MyServerGOEXEC sp_helpindex EmployeeGO

三、重新生成和组织索引:

1、重新生成和组织索引的原因:对基础数据执行插入、更新或删除操作,SQL数据库引擎会自动维护索引,但时间长了,这些修改可能导致索引中的信息分散在数据库中(含有碎片),碎片非常多时,索引可能会降低查询性能,导致应用程序响应缓慢。

2、重新生成和组织索引的步骤:

1)碎片检查:

A、一般碎片比例大于30%,使用重新生成索引;

B、小于30%大于5%,使用重新组织索引;

C、小5%不必处理

2)重新组织或重新生成索引

标签: #sqlserver数据库算法