/********************
 第八单元:实现索引
********************/
/*
参看教材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 '林%';

数据库笔记08:实现索引相关推荐

  1. 【数据库笔记】高性能MySQL:chapter 5 创建高性能的索引

    文章目录 前置知识 5.0 引言 5.1 索引基础 1. 索引的类型 B-Tree 索引 哈希索引 空间数据索引(R-Tree) 全文索引 5.2 索引基础 5.3 高性能的索引策略 1. 独立的列 ...

  2. 数据库学习笔记(七)-----表索引

    文章目录 前言 一.索引概述 1.索引类型 2.索引存储 3.索引优点 4.索引缺点 5.使用建议 二.创建和查看索引 1.普通索引 1.创建表时定义索引 2.已存在的表上创建索引 3.查看索引执行情 ...

  3. 【数据库】2、索引、调优、explain(尚硅谷笔记)

    尚硅谷JAVA研究院 版本v1.1 第 1 章 MySQL 简介 1.什么是 Mysql MySQL 是一个关系型数据库管理系统, 由瑞典 MySQL AB 公司开发, 目前属于 Oracle 公司. ...

  4. JAVA自学笔记08

    JAVA自学笔记08 1.构造方法私有,外界就不能再创建对象 2.说明书的制作过程 1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类:工具类的成员方法一般是静态的,因此在测 ...

  5. ESP32 单片机学习笔记 - 08 - WebSocket客户端

    前言,终于要到网络模型的最后一层,第四层,应用层,http.websocket的实践了. 文章目录 ESP32 单片机学习笔记 - 08 - WebSocket客户端 一.应用层协议 科普概念 二.编 ...

  6. 【数据库笔记04】(表间建立联系,多表查询)

    [数据库笔记04](表间建立联系) 如何联系表 多表之间的关系怎么维护? 多表之间的建表原则 多表查询 交叉连接查询 (笛卡儿积) 内链接 隐式内链接 显式内链接 -- INNER JOIN--ON ...

  7. oracle创建索引index,【学习笔记】Oracle索引 创建含sysdate的函数index案例

    天萃荷净 分享一篇运维DBA需求,创建含sysdate的函数index案例 1.模拟Oracle数据库环境 创建表插入数据库 [oracle@node1 ~]$ sqlplus chf/oraclep ...

  8. 【SQL数据库基础08】变量--系统变量:全局、会话、自定义变量

    文章目录 一.系统变量 1.查看所有系统变量 2.查看满足条件的部分系统变量 3.查看指定的系统变量的值 4.为某个系统变量赋值 1.1 全局变量 ①查看所有全局变量 ②查看满足条件的部分系统变量 ③ ...

  9. SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引 @邀月

    邀月 的数据库学习 http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html SQL Server 2008中SQL应用系列及BI ...

最新文章

  1. 网络营销外包浅析网络营销外包中网站排名效果不佳的原因有哪些?
  2. .net mvc 报表_FastReport.Net已实现对.Net 5.0的支持
  3. Qt Marketplace
  4. python脚本自动运行失败_Linux下Python脚本自启动和定时启动的详细步骤
  5. Detectron2学习笔记
  6. SFP光模块基本概念及使用注意事项详解
  7. mysql数据库创建交叉表查询_sql – 我需要知道如何创建交叉表查询
  8. java编辑遗忘曲线代码_用jsp写出记忆曲线的表格(用学习新概念英语做例子)
  9. 无线安全相关介绍及Windows下扫描WiFi
  10. ITIL服务管理知识体系的介绍
  11. 斯蒂文理工计算机排名,全美最强STEM大学排行榜发布!这些学校考虑一下?
  12. 高级计算机怎么计算增速,增速的计算公式
  13. 操作系统 FCFS,SPF,HRRN算法的实现
  14. C盘用户里的文件夹改名
  15. 宏基服务器 安装系统,宏基Acer笔记本重装系统win7图文安装教程
  16. 什么是MTTF,MTBF,MTRF
  17. 计算模拟I2C的传输速率
  18. 单细胞拟时分析:基因及通路随拟时表达变化趋势
  19. IP远程实施访问另一台电脑
  20. Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)

热门文章

  1. 史上规模最大的中文知识图谱以及估值两个亿的 AI 核心代码
  2. java数据类型之间的转换_Java基本类型之间的转换
  3. 设计模式笔记十四:责任链模式
  4. 简述java的异常处理机制_简述java异常处理机制
  5. Leetcode-237:删除链表中的节点
  6. WORD如何比较原文档和别人修改过的文档?
  7. Go编译exe可执行文件去掉运行时的CMD窗口
  8. Spark机器学习库MLib分类和回归文档V1.4.1(翻译)
  9. 判断并输出三个数abc 中的最大值 (C语言)
  10. nodejs后端使用art-template