sql多表联接查询优化技巧_第1页
sql多表联接查询优化技巧_第2页
sql多表联接查询优化技巧_第3页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

sql多表联接查询优化技巧

0串联查询操作多表连接操作通常需要大量的cpu时间和内存。因此,多表连接请求在优化数据库方面发挥着重要作用。这是数据库中最基本、最常用、最复杂的操作。在数据库的管理信息系统中,联接查询操作是所有数据库操作中所占据比重最大的操作。当数据库系统积累到一定程度,若查询时采用单条顺序扫描,那么扫描一遍所有的记录可能就得花上几十分钟,甚至几小时,这样的系统就失去了现实的使用价值。采取什么样的查询策略,使联接查询时间降低,就是本文需要研究的查询优化问题。1尽量串联查询,尽量使用联少连接表联接查询操作的前提是笛卡儿积,即要将多表中所有的元组拿来运算,再从中找出符合条件的,其本身就增加了运算的负担,所以我们在做优化时尽量避免联接查询。如果必须要使用联接查询时也要尽量使用较少的联接表,查询优化力图找出给定等价的表达式,但执行效率更高,一个查询往往会有许多实现方法,关键是如何找出一个与之等价的且操作时间又少的表达式。优化的核心问题是尽可能减少查询中各表的参与加工的数据量,从而达到优化时间和空间的目的。2联合方式搜索优化原则2.1多表粘连查询给定三个关系模式:(以下实例均以此为例)例:查询1001学生选修的课程成绩。分析:在此查询中涉及到sno和score两个字段,sno在s表中,score在sc表中,若要使用s和sc的联接,SQL语句为:SELECTscoreFROMs,scWHEREs.sno=sc.snoandsno=‘1001’则此查询就是多表联接查询,这样势必要做笛卡儿积操作,所以会增加检索的时间。分析:在此查询中涉及到的sno和score两个字段可以在sc表中全部找到,按照尽量使用单表操作原则,可以只用一个sc表。SQL语句改为:SELECTscoreFROMscWHEREsno=‘1001’这样避免了联接时的笛卡儿积操作,大大提高检索速度。2.2不能执行的连接操作应遵循以下原则2.2.1多表串联查询这样就可以减少查询中参与加工的数据量,从而达到优化时间和空间的目的。例:查询选修了“数据库应用”课程的学生的学号和成绩。分析:此查询中涉及到sno、cname和score三个字段,分别在s、c和sc中,若要使用s、c和sc的联接,SQL语句为:SELECTsno,scoreFROMs,c,scWHEREs.sno=sc.snoando=soandcname=‘数据库应用’则此查询是多表联接查询,并且联接的三表中,两两都要做笛卡儿积操作,所以会增加检索的时间。分析:此查询中涉及到sno、cname和score三个字段,分别在c表和sc表中就可以全部找到,按照联接表时联少不联多的原则,可以只用c和sc表。SQL语句改为:SELECTsno,scoreFROMc,scWHEREo=soandcname=‘数据库应用’2.2.2核心表是连接s表和c表的纽带使联接的表的个数尽量少,但是不能一味的追求表的个数,如果表的使用不能达到我们要查询的数据,或者不能实现联接,那也是不成功的。例3:查询选修了“数据库应用”课程的学生的姓名。分析:此查询中涉及到sname和cname两个字段,分别在s表和c表中,若要使用s和c的联接,SQL语句为:SELECTsname,cnameFROMs,cWHEREcname=‘数据库应用’则此查询是多表联接查询,但两个表没有公共属性,所以实现不了联接,这样此操作就变成了单纯的笛卡儿积操作,在此联接中会查询出不符合条件的记录,失去了查询的意义。分析:此查询中涉及到sname和cname两个字段,分别在s表和c表中,但是s表和c表没有公共属性,不能实现联接,所以必须借助sc表,所以此查询是s表、c表和sc表三表的联接。SQL语句改为:SELECTsname,cnameFROMs,c,scWHEREs.sno=sc.snoando=soandcname=‘数据库应用’2.3多个数据表粘连当查询多个数据表时,要先过滤后联接。例5:查询所有成绩大于70分的学生的信息。分析:要做s表和sc表两表联接,并筛选出符合条件的记录。此查询语句首先将两个数据表按照学号进行联接,然后再将符合条件的记录筛选。由于两个数据表进行联接时有些记录是以后要筛选掉的,且多个数据表联接是笛卡尔积运算,消耗的时间会随着记录个数的增加很快地增长。SQL语句改为:SELECT*FROMs,scWHEREscore>70ands.sno=sc.sno此联接查询语句克服了以上缺点,首先筛选出符合条件的记录,减少了进行联接的记录个数,然后再执行联接查询,大大提高了查询效率。3多表粘连查询查询优化要抓住关键问题,对于数据库应用程序来说,重点在于如何提高SQL的执行效率。在数据库的开发和维护过程中,多表联接查询的优化设计可以提高系统性能,对于数据量大的数据库系统尤为重要。以上介绍的几种优化策略使多表联接查询在时间和空间上提高了系统的性能,在一定程度上提高了查询效率。s(sno,sname,sec,birthday,email)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论