实验16数据库查询优化 实验目的 1.掌握数据库査询 SELECT子句的优化; 2.熟悉数据库的优化技巧 3.熟悉索引的创建及优化。 实验环境 1.硬件 每位学生配备计算机一台,满足相关软件的安装 2.软件 Windows操作系统,安装 Oracle database11g企业版; 3.网络 需要局域网支持; 4.工具 无 三、实验理论与预备知识 1.SQL语句优化策略; 2.连接査询的优化策略; 3.索引的使用 四、实验任务 1.连接查询的使用 集合查询的使用 五、实验内容及步骤 1.数据库查询优化 Oracle可以存储更多更复杂的数据,这就使得数据的查询效率显得更为重 要,低效率的查询给实际应用带来的麻烦事不可估量的,对于 DELETE语句、 SELETE 子句、FROM子句和 WHERE子句等都可以进行优化 以数据库ORCL、表空间 stu oracle及数据表 student、 course、sc为基础, 执行以下操作;
实验 16 数据库查询优化 一、实验目的 1. 掌握数据库查询 SELECT 子句的优化; 2. 熟悉数据库的优化技巧; 3. 熟悉索引的创建及优化。 二、实验环境 1. 硬件 每位学生配备计算机一台,满足相关软件的安装; 2. 软件 Windows 操作系统,安装 Oracle Database 11g 企业版; 3. 网络 需要局域网支持; 4. 工具 无 三、实验理论与预备知识 1. SQL 语句优化策略; 2. 连接查询的优化策略; 3. 索引的使用。 四、实验任务 1. 连接查询的使用; 2. 集合查询的使用。 五、实验内容及步骤 1. 数据库查询优化 Oracle 可以存储更多更复杂的数据,这就使得数据的查询效率显得更为重 要,低效率的查询给实际应用带来的麻烦事不可估量的,对于DELETE语句、SELETE 子句、FROM 子句和 WHERE 子句等都可以进行优化。 以数据库 ORCL、表空间 stu_oracle 及数据表 student、course、sc 为基础, 执行以下操作;
(1)显示SQL语句执行时间 执行SQL语句: SET TIMING ON (2)请执行以下SαL语句,指出每组查询效率较高的语句,并总结出SQL语 句查询优化建议; 第一组:查询学生的基本信息; 1) Select* from student 2)Select Sno, Sname, Ssex, Sbirth, Sdept from student 3) SELECT SNO CNO, GRADE FROM SC 第二组:查询及格的学生成绩 1) Select from sc where Grade>59 2)Select* from sc where Grade>=60 3) Select Sno, Cno, Grade from sc where grade>59: 4)Select Sno, Cno, grade from sc where grade>=60 5) SELECT SNO, CNO, GRADE FROM SC WHERE GRADE>=60 第三组:查询学生的学号、姓名、课程号、成绩 1) Select student sno, sname cno, grade from student, sc where student sno=sc. no; 2) Select student. sno, sname, cno, grade from sc, student where studentsno=scsno 3) Select ssno, sname, cno grade from student s, sc a where ssno=asno 4)Select ssno, sname, cno, grade from sc a, student s where s sno=a sno 5) SELECT SSNO SANME CNO GRADE FROM SC ASTUDENT S WHERE S SNO=ASNO 第四组:査询选修“数据库原理”的学生姓名 1) select Sname from student, sc, course where student sno=sc sno and sc cno= course. cno and course cname='数据库原理 2)select Sname from student where sno in(select sno from sc where cno=(select cno from course where cname='数据库原理") 第五组: 1) Select sno, Sname, Sbirth from student where ssex=男 and sdept=信息技术学 院 2) Select sno,name, Birth from student sdept='信息技术学院' and where ssex
(1) 显示 SQL 语句执行时间 执行 SQL 语句:SET TIMING ON (2) 请执行以下 SQL 语句,指出每组查询效率较高的语句,并总结出 SQL 语 句查询优化建议; 第一组:查询学生的基本信息; 1) Select * from student; 2) Select Sno,Sname,Ssex,Sbirth,Sdept from student; 3) SELECT SNO,CNO,GRADE FROM SC; 第二组:查询及格的学生成绩 1) Select * from sc where Grade>59; 2) Select * from sc where Grade>=60; 3) Select Sno,Cno,Grade from sc where Grade>59; 4) Select Sno,Cno,Grade from sc where Grade>=60; 5) SELECT SNO,CNO,GRADE FROM SC WHERE GRADE>=60; 第三组:查询学生的学号、姓名、课程号、成绩; 1) Select student.sno,sname,cno,grade from student,sc where student.sno=sc.sno; 2) Select student.sno,sname,cno,grade from sc, student where student.sno=sc.sno; 3) Select s.sno,sname,cno,grade from student s,sc a where s.sno=a.sno; 4) Select s.sno,sname,cno,grade from sc a,student s where s.sno=a.sno; 5) SELECT S.SNO,SANME,CNO,GRADE FROM SC A,STUDENT S WHERE S.SNO=A.SNO; 第四组:查询选修“数据库原理”的学生姓名; 1) select Sname from student,sc,course where student.sno=sc.sno and sc.cno=course.cno and course.cname='数据库原理'; 2) select Sname from student where sno in (select sno from sc where cno=(select cno from course where cname='数据库原理')); 第五组: 1) Select Sno,Sname, Sbirth from student where ssex='男' and sdept='信息技术学 院'; 2) Select Sno,Sname, Sbirth from student sdept='信息技术学院' and where ssex=
男 (3)针对以下査询,写出执行效率最高的査询语句,并写出测试过程; 1)查询和“崔晓”一个院系的其他学生的学号、姓名、院系 2)査询信息学院年龄最大的学生的学号、姓名、性别 3)査询选修“数据库原理”课程的学生学号、姓名,课程号及成绩 4)査询信息学院学生选修限选课的学号、课程号及成绩; 5)查询Sc表中80分以上学生的基本信息; 创建及管理索引 索引是表的一个概念部分,用来提高检索数据的效率,但是不必要的索引反 而会影响查询效率 以数据库ORCL、表空间 stu oracle及数据表 student、 course、sc为基础, 执行以下操作; (1)索引效率的比较 1)重启 oracle服务,记录下面语句的执行时间 Select* from student where sname='张山; 2)为 student的 sname创建索引,请写出具体创建方法; 3)重启 oracle服务,再次执行下面语句,并记录执行时间 Select* from student where sname=张山; (2)请分析针对数据表 student、 course、sc,应该创建哪些索引,并比较索 引建立前后,语句执行速度的变化?如主键索引存在有无区别? (3)请简述创建索引的基本步骤。 六、实验分析 1.总结常见的SQL语句优化技巧 2.总结创建索引的基本原则。 七、课外自主实验 无 八、实验扩展资源 1.图书 (1)王彬周士贵 Oracle11g基础与提高[M电子工业出版社2008
男'; (3) 针对以下查询,写出执行效率最高的查询语句,并写出测试过程; 1) 查询和“崔晓”一个院系的其他学生的学号、姓名、院系; 2) 查询信息学院年龄最大的学生的学号、姓名、性别; 3) 查询选修“数据库原理”课程的学生学号、姓名,课程号及成绩; 4) 查询信息学院学生选修限选课的学号、课程号及成绩; 5) 查询 sc 表中 80 分以上学生的基本信息; 2. 创建及管理索引 索引是表的一个概念部分,用来提高检索数据的效率,但是不必要的索引反 而会影响查询效率。 以数据库 ORCL、表空间 stu_oracle 及数据表 student、course、sc 为基础, 执行以下操作; (1) 索引效率的比较 1) 重启 oracle 服务,记录下面语句的执行时间; Select * from student where sname='张山'; 2) 为 student 的 sname 创建索引,请写出具体创建方法; 3) 重启 oracle 服务,再次执行下面语句,并记录执行时间; Select * from student where sname='张山'; (2) 请分析针对数据表 student、course、sc,应该创建哪些索引,并比较索 引建立前后,语句执行速度的变化?如主键索引存在有无区别? (3) 请简述创建索引的基本步骤。 六、实验分析 1. 总结常见的 SQL 语句优化技巧; 2. 总结创建索引的基本原则。 七、课外自主实验 无 八、实验扩展资源 1. 图书 (1)王彬,周士贵.Oracle 11g 基础与提高[M].电子工业出版社,2008
(2) Oracle database11g数据库管理艺术M]人民邮电出版社2010 期刊论文 (1)赵康,李明东.基于成本的 ORACLE子查询性能研究[.西华师范大学学报 (自然科学版)2013(03 3.在线学习平台 (1)http://xg.hactcm.edu.cn 4.其他资源 (1)http://www.oracle.com/cn (2)https://academy.oracle.com
(2)Oracle Database 11g 数据库管理艺术[M].人民邮电出版社,2010. 2. 期刊论文 (1) 赵康,李明东. 基于成本的 ORACLE 子查询性能研究[J]. 西华师范大学学报 (自然科学版).2013(03). 3. 在线学习平台 (1)http://xg.hactcm.edu.cn 4. 其他资源 (1)http://www.oracle.com/cn (2)https://academy.oracle.com