查询优化的最终目的是为了提高数据库系统的性能,但查询为什么在效率上会有差别呢?对于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
分享到:
相关推荐
查询优化的必要性和可能性源自关系数据语言的高度抽象,使得数据库管理系统能够分析查询语义并进行优化。由数据库管理系统自动优化查询有很多好处,如用户无需考虑执行效率,系统能利用数据字典中的统计信息做出更优...
通过一个示例,教材展示了查询优化的必要性。例如,当查询选修了2号课程的学生姓名时,不同的连接顺序和方法会导致显著的性能差异。例如,如果采用嵌套循环法,不合适的连接顺序可能会导致大量的磁盘I/O操作,大大...
文章《SQL数据库性能优化必要性及其优化策略分析.pdf》详尽地讨论了这一主题,并从多个角度分析了优化数据库性能的必要性和策略。 数据库性能优化的必要性主要可以从两个方面来阐述:一是提高系统吞吐量,二是缩短...
### ORACLE中SQL查询优化技术 #### 一、引言 在现代企业级数据库应用中,Oracle数据库因其高性能、高可靠性和丰富的功能被广泛采用。然而,在实际的应用场景下,即使是设计良好的数据库系统也可能因为查询效率低下...
#### 二、数据库查询优化的重要性 数据库查询优化是指在执行SQL查询时选择最高效的查询执行计划的过程。这一过程对于提高数据库性能至关重要。不恰当的查询可能会导致系统资源的浪费,并严重影响应用的响应时间和...
DB2性能优化是一个综合性的过程,涉及到查询优化、并发性管理、系统统计等多个方面。通过对上述关键技术的掌握和实践,可以有效提升DB2数据库的性能表现,满足高并发、大数据量的企业应用需求。
本文主要介绍了查询优化技术的必要性和重要性,并讨论了在使用 SQL 语句时如何写出高质量的查询语句,提高系统的可用性。 查询优化技术的必要性 在应用系统中,数据查询操作占据着最大的比重,而查询操作所基于的 ...
这涉及到对Oracle Spatial执行空间查询和一维查询执行计划的对比分析,指出了空间查询优化中间件的必要性,以及如何利用该中间件将空间查询与非空间查询分开执行,以便Oracle能更加高效地处理空间查询。 标签“空间...
2. 避免对NULL值进行判断:在WHERE子句中,如果对字段进行NULL值判断,查询引擎可能会放弃使用索引转而进行全表扫描。因此,应避免在WHERE子句中使用 IS NULL 或 IS NOT NULL 的条件判断。可以通过设置默认值来避免...
SQL查询优化是数据库管理系统中至关重要的一个环节,其目的是提高数据检索速度,减轻服务器负载,提升系统的整体性能。本文将详细探讨SQL查询优化的常见原因、优化方法以及T-SQL编写时应注意的要点。 查询速度慢的...
这包括查询优化的必要性和可能性,因为关系数据语言的抽象层次高,DBMS可以解析查询的语义。通过优化,DBMS可以利用数据字典中的统计信息来选择最佳执行计划,而无需用户干预,同时能适应数据库物理统计信息的变化,...
3. **并行查询(Parallel LINQ, PLINQ)**: PLINQ是LINQ的一个扩展,允许在多核处理器上并行执行查询,通过数据并行性提高程序运行速度。 4. **编译器设计与实现**: LinqOptimizer作为一个编译器,涉及到了词法分析...
首先,我们要理解SQL优化的重要性。随着数据库规模的增长,不恰当的查询设计可能导致性能瓶颈,增加服务器负载,影响整个系统的响应速度。因此,对SQL语句进行优化是数据库管理的关键环节。 联表查询是SQL中用于...
1. **查询优化的必要性**:优化查询可以显著提升系统性能,使得非过程化的SQL语言成为可能,同时减轻了用户的负担,无需手动优化查询。 2. **优化的一般准则**:优化器基于数据字典中的统计信息选择执行计划,如...
《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用...