数据库笔记08:实现索引

举报
howard2005 发表于 2021/12/30 02:39:19 2021/12/30
【摘要】 /********************  第八单元:实现索引 ********************/ /* 参看教材P162页 1、索引的用途:优化查询,提高查询速度(采用二分查找方法) 2、索引的分类:聚集索引(物理排序)和非聚集索引(逻辑排序) 3. 创...
/********************
 第八单元:实现索引
********************/

/*
参看教材P162页

1、索引的用途:优化查询,提高查询速度(采用二分查找方法)
2、索引的分类:聚集索引(物理排序)和非聚集索引(逻辑排序)
3. 创建索引的语法格式
    
   CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX 索引名
   ON 表名|视图名 (字段名) [WITH DROP_EXISTING]
*/

/* 任务:创建索引 */

--1. 按姓名查询学生记录,为了优化查询,给StuName创建非聚集索引

CREATE   NONCLUSTERED   INDEX   IX_StuName  
ON   Student   ( StuName )   WITH   DROP_EXISTING ;

-- 加上WITH DROP_EXISTING,存在索引时,执行不会报错;但是索引不存在时,执行就会报错。

--2. 针对Course表,课程名不允许重复,创建一个非聚集的唯一索引

CREATE   UNIQUE   INDEX   IX_CouName
ON   Course   ( CouName );

--3. 验证关于唯一索引IX_CouName是否起作用

/* 最后一条记录:019 电子出版概论 */

INSERT   INTO   Course   VALUES   ( '020' , '电子出版概论' , '工程技术' , 3 , '罗小刚' , '02' , '周四3-4节' , 25 , 34 , 25 );

/* 错误信息:不能在具有唯一索引 'IX_CouName' 的对象 'dbo.Course' 中插入重复键的行。*/

/* 任务:重命名索引 */

--1. 将Student表上的索引IX_StuName改名为IX_StuNameNew

sp_rename   'Student.IX_StuName' , 'IX_StuNameNew'

--2. 验证:打开“索引/键”对话框,查看索引名是否已经修改

--3. 将Student表上的索引IX_StuNameNew改名为IX_StuName

sp_rename   'Student.IX_StuNameNew' , 'IX_StuName'

/* 任务:删除索引 */

--1. 删除Student表中的索引IX_StuName

DROP   INDEX   Student . IX_StuName ;

--2. 删除Course表中的唯一索引IX_CouName

DROP   INDEX   Course . IX_CouName ;

--3. 删除Student表的主键索引PK_Student

DROP   INDEX   Student . PK_Student ;

/* 任务:分析索引 */

--1. 对Student表的StuName创建非聚集索引IX_StuName

CREATE   INDEX   IX_StuName
ON   Student   ( StuName );

--2. 显示查询计划:如果一张表上有多个索引,查询时系统会采用哪个索引。

SET   SHOWPLAN_ALL   ON ;   -- 显示查询计划

--(1) 查找姓张的学生记录

SELECT   StuNo , StuName
FROM   Student
WHERE   StuName   LIKE   '张%' ;  

--(2) 查找学号以“02”结尾的学生记录

SELECT   StuNo , StuName
FROM   Student
WHERE   StuNo   LIKE   '%02' ;  

--(3) 查找学号“00000002”的学生记录

SELECT   StuNo , StuName
FROM   Student
WHERE   StuNo = '00000002' ;  

SET   SHOWPLAN_ALL   OFF ;   -- 不显示查询计划

--3. 显示磁盘活动量

SET   STATISTICS   IO   ON ;   -- 显示磁盘读取信息

SELECT   *
FROM   Student
WHERE   StuName   LIKE   '林%' ;






文章来源: howard2005.blog.csdn.net,作者:howard2005,版权归原作者所有,如需转载,请联系作者。

原文链接:howard2005.blog.csdn.net/article/details/79448017

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。