SQL Server 索引

目录

  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 = '张三'
select
  StudentId,
  StudentName,
  Address
from
  Student
with(index = index_Student_StudentName )
where StudentName = '张三'

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

删除索引

和删除表和类似,用drop

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

在什么地方可以使用索引

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

在什么地方不使用索引

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

如有错误,请多多指出

posted @   慕色寒枝  阅读(29)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示