查询优化的最终目的是为了提高数据库系统的性能,但查询为什么在效率上会有差别呢?对于SQL查询,由于相同的表存在不同的存取方法;两个表的连接存在不同的连接方法;多个表的连接也存在不同的连接次序.因此,对于一个给定的查询通常会存在很多等价的执行计划,这些执行计划的输出结果相同,但是执行效率的差别往往很大。下面的例子可以说明不同执行计划在效率上的差别。
假设在一个数据库中包括以下几种关系:
雇员信息:emp(name,age,Sal,dno)
部门信息:dept(dno,dname,rloor,budget,mgr,ano)
账目信息:aent(ano,type,balanee,bno)
银行信息:bank(bno,bname,address)
接下来考虑这样一个简单的SQL查询:
SELECT name,floor
FROM emp,dept
WHERE emp.dno=dept.dno AND sal>100K
相关的参数信息假设如下表2一1所示.
考虑下面三种不同的执行计划:
P1:通过B+树找出emp中所有满足工资大于IOOK的元组,然后用hash索引找出相应的dept中的元组;
P2:对于每个dept中的页,扫描整个emp关系。若emp中的元组满足工资条件大于100K,并且部门号与dept页中的元组相等,那么这两个元组形成的新的元组将作为查询结果中的元组;
P3:对于dopt的每个元组,扫描整个emp关系并存储所有的emp-dopt元组对。然后扫描这些元组对,检查每个元组的两个dno属性是否相等并且工资是否大于100K。
计算以上三个计划的I/0代价,就可以看出其效率的不同。P1大约需要0.32秒,P2需要一个小时甚至更多,而P3需要超过一天的时间。由此可见,不同的执行计划之间的效率差异是很大的。如果没有查询优化技术的帮助,数据库的查询处理器很可能会生成最差的执行计划来执行,这必将大大的损害数据库系统的性能。而查询优化则可以列有可能的计划,并通过一定的方法选择出较好的、代价较小的计划来执行,从而提查询的效率。
参数 参数值
关系emp的页数数 20000
关系emp的元组个数数 100000
emp中满足sal>100K的元组个数 10
关系dept的页数 10
关系dept的元组数 100
关系emp中的索引 在emp.sal上有聚簇B+树索引(深度为3)
关系dept中的索引 在dept.dno上有聚簇散列索引(平均桶长为1.2个页面)
缓冲区页面数 3
访问一个磁盘页面的代价 20ms
分享到:
相关推荐
SQL数据库性能优化必要性及其优化策略分析.pdf
数据中心建设的必要性 随着经济发展,以前大家觉得遥不可及的科技已经慢慢融入我们的生活(微信支付,网上购物等)这些科技能够融入我们的生活主要依据大数据,互联网及人工智能。而数据的产生、存储、计算技术...
适应性强--可以被多种应用程序调用 执行计划 什么是执行计划? 执行计划可以理解为SQL语句的执行路径,通过图表的方式查看SQL的执行步骤 并不需要SQL语句真正执行,是优化器估算的计算 来自数据库的统计信息...
农业产业结构调整优化的必要性.doc
浅议自学考试课程内容优化的必要性
农业产业结构调整优化的必要性分享.pdf
《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用...
《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用...
人力资源管理信息化的必要性及其优化措施.docx
计算机编程方式改进的必要性及优化策略研究.docx
人力资源管理信息化的必要性及优化对策.doc
浅析优化数据库系统对档案信息化建设的必要性.docx
浅谈人力资源管理信息化的必要性及其优化措施.docx
人力资源管理信息化的必要性及优化对策_1.docx
关于人力资源管理信息化的必要性分析及其优化措施探讨.docx
主要为大家详细介绍了react性能优化达到最大化的方法,一步一步优化react性能的过程,告诉大家使用immutable.js的必要性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
无线通信网络优化是提高网络服务质量的关键,是增强网络竞争力的重要途径……
《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用...
《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用...