关于Oralce数据库的SQL查询语句优化探究

2018-09-10 12:59方芳谢慧
河南科技 2018年4期
关键词:优化

方芳 谢慧

摘 要:Oralce数据库具有明显超越普通数据库的性能,不仅提升了存储空间,也扩大了使用范围。在一些大型数据库研究中,优质的SQL查询语句和劣质的SQL查询语句之间的速度差别很有可能达到上百倍之多。为了更好地缩短大数据量的信息查询和处理时间,提升数据库应用系统的工作效率,实现对Oralce数据库中SQL查询语句的优化具有非常重要的意义。

关键词:Oralce数据库;SQL查询语句;优化

中图分类号:TP311.13 文献标识码:A 文章编号:1003-5168(2018)04-0025-02

Research on Optimization of SQL Query in Oralce Database

FANG Fang XIE Hui

(Xiangnan University,Chenzhou Hunan 423000)

Abstract: The Oralce database has the performance that obviously surpasses the common database, not only improves the storage space but also expands the scope of use. In the study of some large databases, speed differences between high-quality SQL queries and low-quality SQL queries are likely to be as much as hundreds of times. In order to achieve a better shorten the time of information query and processing of large amount of data and improve the efficiency of database application system, it is very important to optimize the SQL query in Oralce database.

Keywords: Oralce database;SQL query;optimization

Oralce數据库是目前被应用最为广泛的数据库技术。SQL查询语句的优化就是将性能较低的SQL查询语句转换成具有相同目的的性能较高的SQL查询语句。SQL查询语句优化对提升数据库性能和工作效率具有非常重要的意义。众所周知,Oralce数据库性能的高低是由SQL查询语句的执行效率决定的。数据库的查询功能直接和整个系统的运行速度相关联,因此,实现对Oralce数据库中SQL查询语句的优化是提升数据库性能的有效方式。写出高质量的SQL语句是提升系统可用性的有效方式,通过优化SQL查询语句,可以实现整个系统性能的显著提升。

1 Oralce数据库中SQL语句处理过程分析

通常情况下,数据库实现对SQL语句处理要经过3个基本过程,即分析、执行和返回结果。

1.1 分析

分析是实现对SQL语句进行处理的第一步,主要过程包括以下几方面。

①对SQL语言进行语法分析。Oralce数据库的常用分析方法是自下而上的,其中包含对语法的检验和对命名规范性的检验。语法分析是实现对SQL语句处理过程中最为耗时且付出代价最高的步骤。要实现Oralce数据库查询效力的提升,可以通过绑定变量和存储过程来实现。

②对SQL语句进行语义分析。在这个环节,数据库对SQL语句格式的正确性及对象的存在性进行分析。

③实现对SQL语句表达方式的转变。将较为复杂的SQL表达式转换成相对应的对于基表的SQL查询语句,并写出SQL语句标准。

④选择优化器和优化方式。

⑤选择连接方式及连接顺序。通常情况下,在Oracle SQL查询语句中最好的方式就是手工指定表的连接顺序。

1.2 执行

在使用更新和删除的SQL语句时,需要对数据列进行锁定,这样做的主要目的是防止其他用户对其进行修改。Oralce会先在数据库缓冲中寻找是否存在所需要的数据块,假如存在这样的数据块,那么就可以直接进行修改操作,否则,数据会被从物理文件中读取到数据库缓冲区中。

1.3 返回结果

对查询语句需要返回结果的语句,看返回的结果集是不是需要按照实际应用来进行排序,如果对结果有排序需求,则在排序后进行相关结果输出。

2 Oralce数据库中SQL查询语句优化的原理

SQL是一种集数据定义和数据操控于一体的数据库语言。SQL不仅可以作为一种独立使用的语言应用于终端上进行交互使用,同时还可以作为程序设计中的子语言来使用。用户能通过SQL语言在数据库中提取出自己需要的信息。

SQL语句优化能将原有的SQL语句转换成语义相同且处理效率更高的SQL语句。在系统中,SQL语言的优劣至关重要,用户提交的SQL语句是系统实现优化的基础。SQL语句优化原理就是尽可能地减少查询中参与加工的数据量,以此来达到优化空间和时间的目的。通过查询找出与给定关系代数表达式等价、但执行效率更高的SQL语句表达。通常情况下,查询往往有许多实现方法,SQL语句实现优化的关键就是要寻找一个等价并且高效、占用资源更少的表达式。

3 影响SQL查询语句优化的因素

3.1 表访问方式对SQL语言优化造成的影响

索引扫描、全表扫描和Rowid访问是表的访问方式。在这3种访问方式中,通过Rowid方式对表进行访问是速度最快的。Rowid是直接根据记录在数据磁盘中的位置来获取记录信息的,这就使得该扫描方式具有一定的速度优势。索引访问能获取到该行记录的Rowid值再查找进行判断。全表扫描通过读取全部数据来实现查找,这种方式增加了系统的消耗[1]。

3.2 表连接顺序对SQL语言优化造成的影响

在Oralce数据库中,有两个或者两个以上的表进行连接时,Oralce会自主选择一种较为合适的顺序进行连接。数据库中无论有多少个表需要连接,每次只能有两个表进行连接,一张表完成连接之后,再同下一张表进行连接,直至完成所有的连接。

3.3 表连接方式对SQL语言优化造成的影响

表的连接方式有3种,即嵌套连接、合并连接及哈希连接。嵌套连接被广泛应用于任何形式的连接。合并连接被广泛应用于不等价连接,且在没有索引时效率比嵌套连接高。哈希连接则是通过将驱动表中的连接列建立一个哈希函数,并对链接表中满足条件的每一行计算哈希值并实现匹配。哈希连接常应用于等价连接。

4 Oralce数据库中实现SQL查询语句优化的策略

在坚持SQL查询语句优化原则的基础上积极探究实现SQL语言优化的具体策略,进而实现SQL语句的优化。主要可以从以下几方面入手。

4.1 充分合理地利用牵引

在Oralce数据库中,比较重要的查询方法就是索引查询。通过应用索引查询,能显著提升查询效果。但是,索引查询在应用过程中需要做到与实际应用系统查询需求相结合。因此,要特别注意索引使用过程中的一些技巧和经验,比如:对于大批量数据记录的插入及删除,首先删除索引,再进行数据操作,等操作完成之后再重建必要的索引。

4.2 有意识地避免全表扫描

一般情况下,处理查询或执行SELECT语句时,要执行全表扫描。同时,在执行一些更新或者是删除操作时,也可能会出现全表扫描。当出现在WHERE子句的列没有相应的索引时,会发生全表扫描。全表扫描就像从头到尾读一本书去找一个关键字一样。可以根据SQL,语句的WHERE子句中的列建立索引,从而避免扫描整个表。

4.3 避免相关子查询

假如子查詢对外层相关查询的值进行了引用,就构成了相关子查询。具体到执行过程中,就不能和不相关子查询的方法那样:先单独处理子查询,然后再处理外层查询,而是需要子查询和外层查询交叉同时进行。在查询过程中,查询嵌套层次越多,效率越低,要有效避免相关子查询。

5 结论

SQL语言是一种比较灵活的语言,可以使用不同的语句实现相同的功能,但在Oralce数据库中,语句的执行效率会表现出较大区别。因此,必须要注重SQL查询语句在Oralce数据库中的优化,进而实现数据库性能的提升。在SQL查询语句优化的过程中,要遵循SQL查询语句优化的一般原则,通过切实可行的策略来实现SQL查询语句的优化,从而在保障Oralce数据库应用效率的同时,实现Oralce数据库性能的不断提升。

参考文献:

[1]李伟.Oracle 11g SQL和PL/SQL编程指南[M].北京:清华大学出版社,2014.

猜你喜欢
优化
博物馆临时展览中的展柜优化设计思考
重卡车门关闭力优化及验证
基于ADAMS/Insight的汽车前悬架仿真与优化
基于NETMAX的基站网络优化
重型汽车热伤害分析及优化
优化问题设计
由“形”启“数”优化运算
营商环境五方面持续优化
优化英语课堂教学策略的探索
促进学生认识发展 优化初中化学复习