首页 > 数据库 >SQL Server什么是索引

SQL Server什么是索引

时间:2024-05-14 11:07:54浏览次数:20  
标签:index StudentName -- Server 索引 Student SQL 查询

目录

  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语句的字段

在什么地方不使用索引

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

标签:index,StudentName,--,Server,索引,Student,SQL,查询
From: https://www.cnblogs.com/musehanzhi/p/18190539

相关文章

  • Flink同步mysql到iceberg
    一、如何做一致性保障1、全量数据分片读取,增量数据单并发读取,保证增量阶段不会乱序2、全量阶段写入失败会清空表后重新写入,避免重复数据。3、全量阶段多task并行读取,把每个task开始结束时间提交给FlinkCoordinator,由Coordinator做时间合并后,仅读取一次全量同步区间内变化的binlo......
  • Java开发微服务SpringCloudAlibaba+Nginx+Vue+Mysql+RabbitMQ
    项目介绍随着互联网技术的飞速发展和移动设备的普及,自媒体平台已经成为人们获取信息、传播观点、实现自我价值的重要途径。自媒体平台的设计与实现,不仅需要考虑如何提供便捷的内容发布、编辑和管理功能,还需要考虑如何构建健康的内容生态,保证信息的真实性和可靠性,防止虚假信息的传......
  • mysql存储过程
    1.介绍  存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。  存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。特点:......
  • 连接mysql异常
    问题描述C#连接MySql时,System.Security.Authentication.AuthenticationException:调用SSPI失败,请参见内部异常。所用版本4.5.0原因分析:据查此问题因mysql数据库没有安装ssl证书导致。解决方案:连接字符串中加上“SslMode=none”,。stringconnectStr="server=127.0.0.1;U......
  • MySQL 中 FIELD() 自定义排序
    在MySQL中,你可以使用ORDERBYFIELD()来自定义排序顺序。这个函数允许你指定字段的自定义排序顺序,而不是默认的升序或降序排序。以下是一个简单的例子:假设你有一个表格叫做products,其中有一个字段叫做category,你想按照特定的类别顺序进行排序,比如'Electronics','Clothing......
  • JDBC连接openGauss6.0和PostgreSQL16.2性能对比
    本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者:Gauss松鼠会小助手。PostgreSQLvsopenGauss01前置准备安装JDK:详细安装步骤请问度娘,输入能正常返回即已安装[root@db06~]#java-versionopenjdkversion"1.8.0_262"OpenJDKRuntimeEnvir......
  • 用友畅捷通TPlus-keyEdit.aspx接口存在SQL注入漏洞
    漏洞描述:该漏洞是由于畅捷通T的/tplus/UFAQD/keyEdit.asp接口处未对用户的输入进行过滤和校验,未经身份验证的攻击者可以利用SQL注入漏洞获取数据库中的信息fofa:app="畅捷通-TPlus"POC:GET/tplus/UFAQD/keyEdit.aspx?KeyID=1%27%20and%201=(select%20@@version)%20--&preloa......
  • mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_pa
    今天将程序部署到服务器,遇到mysql.connector.errors.NotSupportedError:Authenticationplugin'caching_sha2_password'isnotsupported问题产生的原因:从MySQL8.0开始,默认的用户认证插件从mysql_native_password变成了caching_sha2_password查看现有的用户mysql>se......
  • SQL经典面试题
    一、连续问题▶如下数据为蚂蚁森林中用户领取的减少碳排放量问题:找出连续3天及以上,减少碳排放量在100以上的用户。思路:① t1②t2③ t3④最终版 二、分组问题▶如下电商公司用户访问时间数据  (ts单位:秒)问题:某个用户连续的访问记录,如果时间间隔<60秒......
  • sql练习
    1.表business2.需求2.1查询在2017年4月份购买过的顾客及总人数 2.2查询顾客的购买明细及月购买总额 2.3将每个顾客的cost按照日期进行累加① ② ③ ④ ⑤ ⑥⑦ 2.4查询每个顾客上次的购买时间 2.5查询前20%时间的订单信息① ......