网站首页 > 博客文章 正文
一、索引概述:
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 MyServer
GO
CREATE NONCLUSTERED INDEX IX_E_Adree ON Employee(E_Adree)
WITH FILLFACTOR=30
GO
2)使用索引查询员工地址为四川的有哪些?
USE MyServer
GO
SELECT * FROM Employee WITH (INDEX=IX_E_Adree)
WHERE E_Adree LIKE '%四川%'
GO
3)删除索引
USE MyServer
GO
DROP INDEX Employee.IX_E_Adree
GO
4)查看索引
--使用视图的方法:
USE MyServer
GO
SELECT * FROM SYSINDEXES WHERE NAME='IX_E_Adree'
GO
--使用存储过程的方法:
USE MyServer
GO
EXEC sp_helpindex Employee
GO
三、重新生成和组织索引:
1、重新生成和组织索引的原因:对基础数据执行插入、更新或删除操作,SQL数据库引擎会自动维护索引,但时间长了,这些修改可能导致索引中的信息分散在数据库中(含有碎片),碎片非常多时,索引可能会降低查询性能,导致应用程序响应缓慢。
2、重新生成和组织索引的步骤:
1)碎片检查:
A、一般碎片比例大于30%,使用重新生成索引;
B、小于30%大于5%,使用重新组织索引;
C、小5%不必处理
2)重新组织或重新生成索引
猜你喜欢
- 2024-10-03 关于go语言中的协程相关知识点总结(三)
- 2024-10-03 详解MS SQL日常维护管理脚本--第二部分
- 2024-10-03 go语言goroutine调度原理以及channel详解
- 2024-10-03 SQL Server 联接概述(sqlserver连接工具有哪些)
- 2024-10-03 从OOM的角度,带你了解虚拟内存机制
- 2024-10-03 golang开发:select多路选择(golang elseif)
- 2024-10-03 从0开始学Golang编程-基础语法(golang语言基础)
- 2024-10-03 非阻塞的Go channel(非阻塞的症状)
- 2024-10-03 数据库加锁原理举例说明(数据库加锁解锁)
- 2024-10-03 如何正确地使用Go Channel(如何正确地使用教材)
你 发表评论:
欢迎- 最近发表
-
- 告别频繁登录!Nuxt3 + TS + Vue3实战:双Token无感刷新方案全解析
- SpringBoot实现单点登录(SSO)的4种方案
- 随机密聊 匿名聊天室程序源码(随机匿名聊天在线)
- SpringBoot大文件上传卡死?分块切割术搞定GB级传输,速度飙升!
- Java 微服务从源码实战开始 | Gitee 项目推荐
- 轻量级埋点sdk搭建,便捷更全面(埋点sdk是什么)
- Spring Boot 实现文件秒传功能(springboot上传文件到指定文件夹)
- 项目中不用redis分布式锁,怎么防止用户重复提交?
- SpringBoot项目日志打印traceId生成
- 如何实现PC端网站扫码登录操作?(网页 扫码)
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)