肇庆学院计算机学院/软件学院实验报告专业软件工程班级软件2班姓名陈焕荣学号201524133232课程名称数据库原理与设计学年2016—2017学期1□/2课程类别专业必修限选□任选□实践□评分:批阅老师:2017年月日实验七查询优化实验目的1.了解DBMS对查询优化的处理过程。2.增强查询优化的实践能力。3.进一步提高编写复杂查询的SQL脚本的能力。4.巩固和加深理解查询相关理论。实验内容针对数据库ShiYan,完成以下查询优化操作。(1)查询P表中各零件编号、名称及重量按86%计算后的信息,其中重量按86%计算后的查询列名改为“零件净重”。要求:1)考虑表扫描的情况。2)考虑建立适当索引的情况。3)考虑重写SQL脚本的情况。4)用不同的方法实现本题中的查询操作,分析系统为各种查询实现方法生成的执行计划和客户统计信息。5)记录各种查询的平均执行时间,决定哪种查询实现方法是相对最优的。(2)查询没有使用天津供应商生产的零件并且当前工程所使用零件的颜色全部为红色的工程号JNO。要求:1)考虑表扫描的情况。2)考虑建立适当索引的情况。3)考虑重写SQL脚本的情况。4)用不同的方法实现本题中的查询操作,分析系统为各种查询实现方法生成的执行计划和客户统计信息。5)记录各种查询的平均执行时间,决定哪种查询实现方法是相对最优的。实验结果(1)A.方法一:“表扫描”Sql语句如下:零件净重selectPNO,PNAME,WEIGHT*0.86fromP实验结果截图:B.方法二:“在P(PNO)上建立唯一索引”createuniqueindexPNO_indexonP(PNO)selectPNO,PNAME,WEIGHT*0.86零件净重fromP实验结果截图:由上可知,方法二相对最优。(2)A.方法一:多表间连接declare@iintset@i=0while@i100beginset@i=@i+1selectSPJ.JNOfromSPJ,P,SwhereP.PNO=SPJ.PNOandSPJ.SNO=S.SNOandP.COLOR='红'实验结果截图:andS.CITY!='天津'endB.方法二:在每个表中分别查询declare@iintset@i=0while@i100beginset@i=@i+1实验结果selectSPJ.JNO截图:fromSPJwhereSPJ.PNOin(selectP.PNOfromPwhereP.PNO=SPJ.PNOandP.COLOR='红')andSPJ.SNOnotin(selectS.SNOfromSwhereS.CITY='天津')endC.方法三declare@iintset@i=0while@i100beginset@i=@i+1selectSPJ.JNOfromSPJwhereSPJ.SNOnotin(selectS.SNOfromSwhereS.CITY='天津')andSPJ.PNOin(selectP.PNOfromPwhereP.PNO=SPJ.PNOandP.COLOR='红')end实验结果截图:D.方法四declare@iintset@i=0while@i100beginset@i=@i+1selectSPJ.JNOfromSPJwhereSPJ.SNOin(selectS.SNO实验结果截图:fromSwhereS.CITY'天津')andSPJ.PNOin(selectP.PNOfromPwhereP.PNO=SPJ.PNOandP.COLOR='红')end由上可知,方法三最优。实验小结通过本次实验,了解DBMS对查询优化的处理过程。对于不懂的问题通过上网搜索和书上查找等方式,不仅能快速地掌握,还能了解到该问题涉及的其他方面的知识。