前言:
当前你们对“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数据库算法