欢迎来到天天文库
浏览记录
ID:35967400
大小:113.60 KB
页数:4页
时间:2019-04-29
《实验9-查询优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验9查询优化一、实验目的1、了解数据库查询优化方法和查询计划的概念。2、学习如何分析查询的代价,并通过建立索引或者修改SQL语句来降低查询代价。二、实验平台SQLServer2005,及其交互查询工具(查询分析器)。三、实验内容和要求SQLSERVER的查询优化经过了三个阶段:查询分析、索引选择、合并选择。查询优化器进行语法分析,并且制定出一个查询的执行计划的过程是:首先对每个子句进行语法分析,并判定是否能够使用该子句限制查询必须扫描的数据量,子句中的条件可能会作为索引中的一个查找参数;再对查询进行语法分析,
2、找出全部查找参数后,查询优化器判定在查找参数上是否存在索引,及该索引是否有效。接着,查询优化器得出一个查询计划;最后,查询优化器估算执行该计划的开销。1、实验环境初始化(1)、打开SQLServerManagementStudio。执行instnwnd.sql文件,生成Northwind数据库,选择要操作的Northwind数据库(Northwind数据库包含一个名为NorthwindTraders的虚构公司的销售数据,该公司从事世界各地的特产食品进出口贸易)。(2)、在菜单栏中选择“工具”——“选项”,在“选项”对
3、话框中,展开左边的“查询计划”——SQLServer——高级,勾选右边“SETSTATISTICSTIME”和“SETSTATISTICSIO”这两个选项,单击“确定”按钮。(3)、将SQL脚本加载到ManagementStudio查询编辑器后,通过单击查询编辑器工具栏上的“显示估计的执行计划”或“包括实际的执行计划”按钮,可以选择是显示估计的执行计划还是显示实际的执行计划。如果单击“显示估计的执行计划”,则将分析该脚本并生成估计的执行计划。如果单击“包括实际的执行计划”,则必须在生成执行计划之前执行该脚本。分析
4、或执行脚本之后,请单击“执行计划”选项卡以查看执行计划输出的图形表示形式。单击查询编辑器工具栏上的“包括客户端统计信息”按钮,当运行一条SQL语句,在“消息”选项卡中就会显示出相关的统计信息。2、实验步骤UseNorthwindGO(一)查看执行计划和所花费的成本执行SQL语句:SELECTProductNameFROM[dbo].[OrderDetails]b,ProductsaWHEREb.ProductID=a.ProductID其执行计划如图1,执行计划中的图标分别表示一个逻辑或物理的运算符:图1将鼠标
5、放在某个物理或逻辑运算符中,该运算符的执行计划会显示出来,如图2所示:图2从图1可以看出此执行计划的执行步骤:a、首先对Products表进行聚集索引扫描,代价估计为16%;b、对OrderDetails表进行索引扫描,代价估计为36%;c、对两张表合并联接,代价估计为48%。(二)、查找订购了“Grandma'sBoysenberrySpread”的商品的客户编号、客户名称、订单编号、订货数量和订货金额,并按客户编号排序输出。执行SQL语句:SELECTa.CustomerID,CompanyName,b.Orde
6、rID,Quantity,Quantity*c.UnitPricetotalFROMCustomersa,Ordersb,[dbo].[OrderDetails]c,ProductsdWHEREa.CustomerID=b.CustomerIDANDb.OrderID=c.OrderIDANDc.ProductID=d.ProductIDANDProductName='Grandma''sBoysenberrySpread'ORDERBYa.CustomerID其查询计划如图3:图3从图3中可以看到其执行步骤。(1)
7、首先对表Products进行索引查找,将扫描结果中满足“Grandma'sBoysenberrySpread”的商品选取出来,代价估计为3%。将鼠标放在该物理运算符上,会显示出详细代价信息,I/O成本为0.003125,CPU成本为0.0001581,总成本为0.0032831。(2)对OrderDetails表进行索引查找,代价估计为3%。(3)在内存中对1、2步得到的结果做一个嵌套连接,获得订购了“Grandma'sBoysenberrySpread”的商品的订单编号及产品编号。由于数据量小,该嵌套连接在内存中进
8、行,没有涉及I/O操作,故代价估计为0%。执行嵌套连接操作需要耗费一定的CPU时间,此处,CPU成本为0.000117。(4)对OrderDetails表进行聚集索引查找,按订单编号和产品编号提取“订购单价”和“订购数量”信息,代价估计为27%。(5)在内存中对3、4步得到的结果做一个嵌套连接,获得订购了“Grandma'sBoysenberr
此文档下载收益归作者所有