SQL Server什么是索引

news/2024/9/23 1:30:25

目录

  1. 什么是索引
    1.1. 优点
    1.2. 缺点
  2. 创建索引
  3. 使用索引
  4. 删除索引
  5. 在什么地方可以使用索引
  6. 在什么地方不使用索引

什么是索引

问:我们用字典查一个字,但是字典非常厚,我们要怎么查到我们想要查的字呢?
答:我们可以使用字典中的目录,根据目录可以快速查到我们想差的字。

我们可以把数据库系统看成一个正在查字典的人
数据表就是一本字典
索引就是字典中的目录

人想要快速的查到字不可能一页一页的找,
这里就要用到目录,通过目录可以知道这个字在哪

也就是说,索引可以提高查询速度

分类

主要有两个类型

聚集索引(clustered)

  • 有序的索引(1-2-3...)
  • 每个表中只能有一个

非聚集索引(nonclustered)

  • 无序的索引
  • 每个表可以有多个

优点

索引可以提高查询速度

缺点

  • 降低了增删改执行速度(修改数据的同时还要更新索引)
    当我们已经创建了两个索引

    然后我们修改增加一条数据后,表中的索引会更新

创建索引

-- 语法
-- create [clustered/nonclustered] index [索引名称,一般是: index_表名_字段名] on [表名]([字段名]) [with fullfactor=x]
-- [clustered/nonclustered]: 聚集索引/非聚集索引,可选参数
-- [with fullfactor=x]: 填充因子,取值范围0-100
-- 创建一个非聚集索引
-- 假如我们已经创建了一个Student表,表内包含了StudentId、StudentName、Address等字段
create nonclustered index index_Student_StudentName on Student(StudentName)

使用索引

-- 语法
-- select * from (对应索引的表) with(index = [索引名称]) where StudentName = '张三'
selectStudentId,StudentName,Address
fromStudent
with(index = index_Student_StudentName )
where StudentName = '张三'

其实创建好索引之后,我们并不需要显式使用它,在查询到相关的表,数据库会自动优化查询

删除索引

和删除表和类似,用drop

-- 语法
-- drop index (表名).(索引名称)
drop index Student.index_Student_StudentName

在什么地方可以使用索引

  • 经常查询的字段
  • 需要优化查询速度的字段
  • 经常使用where语句的字段

在什么地方不使用索引

  • 不经常查询的字段
  • 经常修改的字段
  • 字段值重复性很少的字段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31328.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

基于TIA WINCC的审计追踪功能

1. 哪些HMI可以用auditTrailTP277/OP277/MP277等等 精致面板系列 wincc runtime advanced wincc runtime advanced的面板PC2. 设置步骤进入"优良系统设置",启动"组态与GMP相符",启动GMP功能进入"记录"-"审计追踪"HMI保存记录可以选S…

.NET 6 Entity Framework Core Db First(1) 创建模型

项目准备 1、开发环境vs2022 .NET6 2、创建项目新建项目 ASP.NET Core Web API,解决方案名称:EFDBFirstDemo,项目名称:EFDBFirstDemo.API,选择.NET 6.0 解决方案=》新建项目=》类库,类库名称:EFDBFirstDemo.Model,选择.NET 6.0安装 EF Core 安装方式使用程序包管理控制…

计算机是如何启动的?

从打开电源到开始操作,计算机的启动是一个非常复杂的过程。我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示...... 这几天,我查了一些资料,试图搞懂它。下面就是我整理的笔记。 零、boot的含义 先问一个问题,"启动"用英语怎么说? 回答是bo…

GBJ3510-ASEMI室内空调机GBJ3510

GBJ3510-ASEMI室内空调机GBJ3510编辑:ll GBJ3510-ASEMI室内空调机GBJ3510 型号:GBJ3510 品牌:ASEMI 封装:GBJ-4 最大重复峰值反向电压:1000V 最大正向平均整流电流(Vdss):35A 功率(Pd):中小功率 芯片个数:4 引脚数量:4 类型:整流方桥、整流桥 正向浪涌电流:350A 正向…

uniapp小程序上传图片到腾讯云

记录下首次首次使用uniapp小程序上传图片到腾讯云 1、去腾讯云查看资料,因为图片是上传到腾讯云的,无非就是网络请求与验证的关系,参考资料https://cloud.tencent.com/ 2、在腾讯云控制塔输入 对象存储 3、找到API文档和SDK文档 4、选择您需要的SDK,我需要是小程序SDK,…

redis学习笔记4: 在Java中操作Redis

redis学习笔记4: 在Java中操作RedisRedis的Java客户端Jedis [命令和原生Redis基本相同]Lettuce [性能高效]Spring Date Redis [可以在Spring项目中使用, 简化操作]Spring Date Redis使用方式 导入maven坐标 <!-- https://mvnrepository.com/artifact/org.springframework.bo…

xxl任务绑定一台服务器的两个项目

项目场景: 之前正式一直都是使用的手动注册,而且测试环境还没有注册上去,但是最近开发的需要每天在测试上跑跑看,再上生产,所以这次要解决掉。问题描述 我是测试环境和正式环境都在一台机子上,两个环境项目跑不同的docker容器,我要做的是这两个容器里面的项目都注册到我…

day4-1-Redis

day4-1-Redis入门Redis介绍 Redis是一个基于内存的key-value结构数据库基于内存存储, 读写性能高适合存储热点数据(热点商品, 咨询, 新闻) (在特定时间有大量访问量)key valueid 101name 小智city 北京redis中文网Redis安装Redis启动-服务端 在安装目录运行cmd, 若提示没有相关…