SQL 中: 索引的建立和删除

目录

  • 实验过程
  • 创建索引
  • 修改索引
  • 删除索引
  • 查询索引
  • 查看索引信息
  • 分析索引
  • 待续、更新中

实验过程

1 在STUDENT表的sno列上创建一个非聚簇索引,索引名为“student_sno_idx”。

CREATE INDEX student_sno_idx 
ON STUDENT (sno);

2.在STUDENT表上按sno的升序,sname的降序创建一个复合索引,索引名为“student_sno_sname_idx”。

Create clustered index   student_sno_sname_idx
on STUDENT (sno  ASC,sname DESC )

3.把STUDENT表上的索引student_sno_sname_idx更名为“IX_sno_sname”。

EXEC sp_rename 'student.student_sno_sname_idx', 'IX_sno_sname', 'INDEX';
-- sql server的重命名命令

4.在COURSE表的cno列上创建唯一聚簇索引,索引名为“course_cno_idx”。

-- 手动删除主键聚集索引
CREATE UNIQUE CLUSTERED INDEX course_cno_idx 
ON COURSE(cno);

5.使用存储过程sp_helpindex查看STUDENT表中的索引信息。
EXEC sp_helpindex ‘STUDENT’;

6.删除STUDENT表中的索引IX_sname。

7.使用存储过程sp_rename将索引student_sno_idx改名为“student_sno”。

use suoyinEXEC sp_rename 'student.student_sno_idx', 'student_sno', 'INDEX';

六、分析索引
1.指明引用索引
SELECT 目标列表达式 FROM 表名 WITH (INDEX (索引名)) WHERE 查询条件
这个 SQL 命令语法用于指定在查询过程中使用特定的索引。
索引名:要在查询中使用的索引的名称。
WITH (INDEX (索引名)) : 用来指定在执行查询时使用特定的索引。这可以用于强制查询优化器使用特定的索引,而不是根据统计信息和查询条件自行选择索引。
使用这个语法时,需要确保指定的索引名是存在的. 在某些情况下,强制使用特定的索引可能会提高查询性能,但在其他情况下可能会降低性能。因此,在使用这个语法时,需要谨慎评估是否真正需要强制使用特定的索引。

如:
select sage
from student
with(index (IX_sage))
where sage>18;

2.使用SHOWPLAN_ALL分析索引
设置是否显示查询计划的命令为:
SET SHOWPLAN_ALL ON|OFF

SET SHOWPLAN_TEXT ON|OFF
必须要有相应的权限

SET SHOWPLAN_ALL ON|OFF命令 与SET SHOWPLAN_TEXT ON|OFF命令 ,是返回有关语句执行情况的详细信息,并估计语句对资源的需求。
而错误提示:
SET SHOWPLAN 语句必须是批处理中仅有的语句。

解决:

加三个go ,批处理开头以go开始
go
SET showplan_all ongo
SELECT * 
FROM student go
SET showplan_all  OFF

8.使用IX_sno_sname查询名叫“刘云云”的学生的信息。

select * 
from student 
with (index(IX_sno_sname))
where sname ='刘云云'

9.如果不使用索引IX_sno_sname,此次查询如何完成?

select * 
from student 
where sname ='刘云云'

创建索引

语法:

CREATE [UNIQUE]  [CLUSTERED | NONCLUSTERED]   INDEX  <索引名> 
ON <表名>  (<列名> [ASC|DESC]  [,…n] )

例如:
在STUDENT表上按sno的升序,sname的降序创建一个复合索引,索引名为“student_sno_sname_idx

Create  index    student_sno_sname_idx
on STUDENT (sno  ASC,cno DESC )
-- CLUSTERED:可选,表示指定创建的索引为聚集索引
-- NONCLUSTERED:可选,表示指定创建的索引为非聚集索引

作用:

不必全盘扫描全部表内容
类似指针,书页目录

创建索引条件(经验)

创建查询的l列:
主码/外码/经常使用的列创建索引后会有索引码 / 指针,也会占用物理磁盘空间,需要合理创建索引

分类:
聚簇索引

创建该索引后, 表中数据行的物理存储顺序与索引顺序完全相同,  表中有主码时会自动创建聚簇索引只能有一个主码,一个聚簇索引

非聚簇索引

不改变表中数据行的物理存储顺序,即表中的数据行不按索引码的次序存储。在非聚簇索引中,每个索引都有指针指向包含该键值的数据行

聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个

DBMS向导创建索引
在这里插入图片描述

在这里插入图片描述
命令创建索引

  1. 在COURSE表的cno列上创建唯一聚簇索引,索引名为“course_cno_idx”

CREATE UNIQUE CLUSTERED INDEX course_cno_idx 
ON COURSE(cno);
-- 必须先删除自动为主键创建的聚集索引, 且也要删除与之关联的外键表的约束

修改索引

例如:

-- sql server的重命名索引命令
--语法
-- EXEC sp_rename 'table_name.old_index_name', 'new_index_name', 'INDEX';EXEC sp_rename 'student.student_sno_sname_idx', 'IX_sno_sname', 'INDEX';--oracle 
ALTER INDEX old_index_nameRENAME TO new_index_name;

删除索引

例如:
删除STUDENT表中的索引IX_sname

DROP INDEX IX_sname
ON student ;

查询索引

查询过程中使用特定的索引
语法:
SELECT 目标列表达式
FROM 表名
WITH (INDEX (索引名))
WHERE 查询条件;

WITH (INDEX (索引名)) : 用来指定在执行查询时使用特定的索引。

例如:


select sage
from student
with(index (IX_sage))
where sage>18;

结果:

在这里插入图片描述

查看索引信息

EXEC sp_helpindex 'STUDENT';

在这里插入图片描述

分析索引

SHOWPLAN_ALL 分析索引

设置是否显示查询计划的命令为:
SET SHOWPLAN_ALL ON|OFF
或
SET SHOWPLAN_TEXT ON|OFF如何才能检测查询使用了哪个索引呢?SQL Server提供了多种分析索引和查询性能的方法,其中最常用的是SHOWPLAN_ALL方法。
显示查询计划就是SQL Server将显示在执行查询的过程中连接表时采取的每个步骤,以及是否选择及选择了哪个索引,从而帮助我们分析有哪些索引被系统采用。
通过在查询语句中设置SHOWPLAN_ALL选项,可以选择是否让SQL Server显示查询计划。

待续、更新中

 
 
—————————————————————
以上就是今日博客的全部内容了
创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-简单点-深度学习下的边缘检测资料

1 OpenCV4 调用HED边缘检测算法 CVPR 2022&#xff0c;边缘检测 EDTER: Edge Detection with Transformer DexiNed

【Java】:按位与、按位或

按位与运算符&#xff08; & &#xff09; 当且仅当两个操作数的二进制的某一位均非0时&#xff0c;该位的结果才为1。 int a 5; int b 3; int c a & b; //c 1// 0 1 0 1 a 5 // 0 0 1 1 b 3 // 0 0 0 1 c 1按位或操作符&#xff08; | &#xff09;&#xff…

【脚本玩漆黑的魅影】全自动对战宫殿

文章目录 原理主要代码全部代码 原理 对战宫殿是让宠物自己打&#xff0c;不需要我们选技能&#xff0c;所以用来刷对战点数很合适。 需要准备三个主力。 主要是根据屏幕截图进行各种操作。 1&#xff0c;外面的对话&#xff0c;除了选自由级以外&#xff0c;其他都是直接点…

Exception异常处理

1. 两种异常处理机制 1.1 使用 throw 关键字手动抛出异常 使用throw关键字抛出异常&#xff0c;代码会的显得简单明了 如下图所示 1.2 使用 try-catch 捕获异常 使用try-catch进行捕获异常&#xff0c;往往会使代码变得更加笼统&#xff0c;层层包裹 如下图所示 2. 自定义…

无限连接的未来:Wi-Fi技术的演进、奥秘与前沿探索

Wi-Fi的历史与发展 Wi-Fi&#xff0c;全称是“Wireless Fidelity”&#xff0c;中文通常翻译为“无线保真”。它是一种允许电子设备通过无线网络连接到互联网的技术。Wi-Fi技术最早由Wi-Fi联盟&#xff08;原IEEE 802.11标准工作组&#xff09;在1997年提出&#xff0c;目的是…

SystemUI 解析

首语 SystemUI(System User Interface)是Android 系统为用户提供的系统级别的信息显示与交互的UI组件应用程序&#xff0c;包含状态栏、导航栏、锁屏、通知面板、快速设置、最近任务等&#xff0c;它们各部分独立&#xff0c;各尽其责。 SystemUI是一个常驻应用程序&#xff…

mybatisplus的条件构造器

条件构造器wrapper&#xff0c;主要用于构造sql语句的where条件&#xff0c;他更擅长这个&#xff0c;但也可以用于构造其他类型的条件&#xff0c;比如order by、group by等。 条件构造器的使用经验&#xff1a; 基于QueryWrapper的查询 练习1. void testQueryWrapper(){Q…

吴恩达机器学习笔记 十八 制定一个性能评估标准 学习曲线 高偏差 高方差

一个模型的好坏的评估基准可以从下面几个方面考虑&#xff1a; 1.考虑人类在这个问题上的表现 2.对比竞争算法的表现 3.根据经验猜测 判断是高偏差还是高方差 训练样本数量越多&#xff0c;越难完美地拟合每个样本&#xff0c;因此 J_train 会逐渐增大一点点&#xff0c;但泛…

线性代数笔记17--行列式及其性质

1. 行列式 符号标识 d e t A ∣ A ∣ det A |A| detA∣A∣ 1.1 基本性质 性质 1 1 1 单位矩阵的行列式为1&#xff1a; d e t I 1 det\ I1 det I1性质 2 2 2 行列式两行交换&#xff0c;行列式取反。 A ⟶ s w a p r o w i , r o w j A ′ d e t A ′ − d e t A A\st…

Rust常用特型之Drop特型

Rust常用特型之Drop特型.md在Rust标准库中&#xff0c;存在很多常用的工具类特型&#xff0c;它们能帮助我们写出更具有Rust风格的代码。 今天&#xff0c;我们主要学习Drop特型。 &#xff08;注&#xff1a;本文更多的是对《Programing Rust 2nd Edition》的自己翻译和理解&…

应届生求职面试注意事项

应届生求职面试注意事项 引言 对于即将毕业的应届生来说&#xff0c;进入职场是一个全新的挑战。在面对众多竞争者的情况下&#xff0c;成功通过面试是获得理想工作的关键一步。本文将介绍一些应届生求职面试的注意事项&#xff0c;帮助应届生更好地应对面试&#xff0c;提高…

算法——滑动窗口之找到字符串中所有的字母异位词,串联所有单词的子串

6.找到字符串中所有的字母异位词 题目:. - 力扣&#xff08;LeetCode&#xff09; 6.1如何快速判断两个字符串是否是异位词 假设现在有s1 aabca,s2 abaca,那么这两个就是异位词,容易想到的判断方法就是将两个字符串按照字典序排序,再依次比较,但是时间复杂度很高;我们看看…

乌干达公司注册优势 乌干达公司注册的条件 乌干达公司注册的流程

乌干达公司注册优势 1、乌干达拥有稳定的政 治环境和开 放的市场经济&#xff0c;为企业提供了良好的发展机遇。 2、乌干达有着优越的地理位置&#xff0c;位于东非内陆&#xff0c;毗邻肯尼亚、坦桑尼亚和刚果&#xff08;金&#xff09;&#xff0c;是通往东非和中非的理想…

精通MySQL:从下载到部署,一切尽在掌握

MySQL数据库下载及安装教程 MySQL是一款广泛应用于各类项目的开源关系型数据库管理系统。它基于Structured Query Language&#xff08;SQL&#xff09;进行数据操作&#xff0c;具有高性能、易使用、成本低等优点。在这篇文章中&#xff0c;我们将向你介绍如何在不同操作系统…

代码随想录算法训练营第五十天| 583. 两个字符串的删除操作 、72. 编辑距离

文章目录 1.两个字符串的删除操作2.编辑距离 1.两个字符串的删除操作 给定两个单词 word1 和 word2&#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 “sea”, word2 “eat” 输出: 2 …

分享软件项目实施方案模板

本项目在实施过程中将遵守做到以下几个方面&#xff1a; 与建设单位共同完成整个系统软件、网络等设计,负责系统的开发、测试、调试、人员培训、系统的试运行和交付&#xff0c;并保证系统质量。负责系统的维护、应用软件的升级和更新。提出对系统硬件设备的相关技术要求。在项…

vue3 动态路由及使用动态路由后刷新界面出现空白页或者404

最近编写vue3动态路由的功能遇到了一些问题&#xff0c;处理好了&#xff0c;总结出来&#xff0c;希望能帮助到你。正片开始 先写好本地缓存菜单的方法&#xff08;存储、删除、获取&#xff09; // utils/menu.jsconst getMenuList () > {return JSON.parse(localStorag…

MachineSink - 优化阅读笔记

注&#xff1a;该优化与全局子表达式消除刚好是相反的过程&#xff0c;具体该不该做这个优化得看代价模型算出来的结果(有采样文件指导算得会更准确) 该优化过程将指令移动到后继基本块中&#xff0c;以便它们不会在不需要其结果的路径上执行。 该优化过程并非旨在替代或完全…

【大厂AI课学习笔记NO.80】深度学习行业人才能力图谱

深度学习领域的就业岗位及所需关键技术、工具、能力分析 深度学习作为人工智能领域的一个重要分支&#xff0c;近年来得到了飞速的发展。随着技术的不断进步和应用场景的不断拓展&#xff0c;深度学习领域的就业岗位也日益增多。本文将从领军人才、产业研发人才、应用开发人才…

Linux——信号

目录 什么是信号 Linux下的信号 信号的记录 信号处理的常见方式 产生信号 使用组合键产生信号&#xff08;包含core dump&#xff09; 使用系统调用向进程发送信号 由软件条件产生信号 由硬件异常产生信号 阻塞信号 内核表示 sigset_t 信号集操作函数 sigpendin…