实验指导05(查询优化)

实验指导05(查询优化)

ID:46689911

大小:90.50 KB

页数:6页

时间:2019-11-26

实验指导05(查询优化)_第1页
实验指导05(查询优化)_第2页
实验指导05(查询优化)_第3页
实验指导05(查询优化)_第4页
实验指导05(查询优化)_第5页
资源描述:

《实验指导05(查询优化)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1实验五:查询优化1.1实验背景我们在写SQL的吋候,不同的人针对同一个问题会写出不同的SQL,而这些不同的SQL会有性能上的优劣,主要表现就是有的SQL执行时间短,冇的则执行时间长。那么怎样的SQL是好的呢?我们教材的“关系系统及其查询优化”一章给出了答案,并口还从关系代数的角度阐述了为什么会存在SQL执行性能上的差界。同时给出了查询优化的原则建议:•选择运算尽可能先做。•在执行连接操作Z前对关系做适当预处理。•投影和选择操作同时执行。•把投影同前后的双目运算结合起來做。•找出公共子表达式。但是,这个建议一般是给那些DBMS产品的生产厂商的,如MS、Ora

2、cle>IBM,作为他们在生产DBMS产需的时候,按照这些建议优化他们的产品。也就是说,当我们在使用这些厂家生产的DBMS执行SQL的时候,SQL会被DBMS自动优化。但是这并不意味着我们可以高枕无忧地肆意乱写SQL,只要能把结果得出来就行。我们还是要了解一些不同DBMS他们对SQL的优化策略。这样可以写出更高质量的SQL。我们可以看下面这个例子:使用SQLServer2000,在ChooseCourse数据库上求解“查询选修了数据库系统原理同学的姓名。”。我们可以写出4条能得到同样结果的SQLo第1条SQL:SELECTStudent.NameFROMSt

3、udent,ChooseCourse,CourseWHEREStudent.StudentID=ChooseCourse.StudentIDANDCourse.CourselD=ChooseCourse.CourselDANDCourse.NameLIKE'数据库%,第2条SQL:SELECTStudent.NameFROMStudentJOINChooseCourseONStudent.StudentID=ChooseCourse.StudentIDJOINCourseONCourse.CourselD=ChooseCourse.CourselDWHERE

4、Course.NameLIKE'数据库知第3条SQL:SELECTStuNameFROM(SELECTStudent.StudentID,Student.NameASStuName,ChooseCourse.CourselD,Course.NameASCouNameFROMStudentINNERJOINChooseCourseONStudent.StudentID=ChooseCourse.StudentIDINNERJOINCourseONCourse.CourselD=ChooseCourse.CourselD)ASSCWHERECouNameLIKE

5、,数据库%:第4条SQL:SELECTNameFROMStudentINNERJOIN(SELECTChooseCourse.*FROMChooseCourse,CourseWHERECourse.NameLIKE'数据悍%ANDCourse.CourselD=ChooseCourse.CourselD)ASCCONStudent.StudentID=CC.StudentID这四条SQL在SQLServer2000下,总体实行效率是否一样呢?如果这四条SQL执行效率不同的话,那么在SQLServer中,什么是决定SQL执行效率的因素呢?为此我们要解决这个问题

6、,需要利用统计学知识来解释。这里补充一些SQLServer中关于SQL查询优化的知识。首先,在SQLServer中,SQL的语句执行过程如下图:图1SQLServer的查询语句执行流程我们从图中了解到,SQL语旬是我们写的,但是怎么执行是由SQLServer说了算的。这里的“执行计划”是指SQLServer真正对你写的SQL将会按照什么步骤执行的意思。再次,DBMS—般采用的查询优化策略有两种:基于规则的/基于语法的(RBO)执行计划与优化算法基于代价的/基于成本的(CBO)图2DBMS-般采用的查询优化策略而SQLServer采取的优化策略是RBO的。那么

7、什么是RBO呢?请査阅SQLServer200()的联机从书中的“优化数据库性能/查询优化”章节,可以获得详细的帮助。然后,我们了解在SQLServer2000中和查询优化有关的T-SQL有哪些。(SETSTATISTICSIOSETSTATISTICSTIMEExecsp_spaceusedTableSQLServer查询有关的语句<_冃穴口SETSHOWPLAN_TEXTON—SETSHOWPLANALLONSETNOCOUNTONGetDate()/DateDi什图3SQLServer2000中和查询优化有关的T-SQL最后,我们还得给出一些在SQ

8、LServer2000中写SQL的指导原则。查询语句

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。