`
javasogo
  • 浏览: 1817163 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Oracle SQL语句处理过程

阅读更多

07年开始,换了一家公司,数据库使用的是ORACLE10G,以前一直使用的是INFORMIX和MSSERVER,感觉ORACLE功能还真强大,比Informi和msserver都好用多啦,体系结构和管理方式都有了许多变化,但使用两个月下来,其实数据库的基本原理是一样的,现结合以前的工作经验和学习的资料,总结ORACLE数据库的一些知识,今天先写Oracle SQL语句处理过程:

一般来说,数据库处理SQL都会经过三个过程:分析、执行、返回结果,比如COGNOS ReportNet通过拖放式完成表现层后,还是会自动生成SQL,然后将SQL传递到ORACLE进行处理。

1。分析

分析是处理SQL语句的第一步,它是SQL语句处理过程较为重要的一步,它又包含几个方面:

(1)语法分析,oracel是采用数据库常用的自底向上的分析方法,包含检查语法规范,命名规范,它是处理SQL语句中最消耗时间且代价最高的步骤,主要表现在绑定变量和存储过程等方面:

A.绑定变量:这也是为什么使用在某种情况下绑定变量方式会比非绑定方式效率和性能高出几倍,主要是绑定变量只会编译一次,随后就会把查询计划存储在一个共享池里,以便以后获取和重用这个查询计划。

B.存储过程:存储过程比一般的SQL语句要快,就是它不用再次编译,而且还可以利用数据库里许多特性,使得它的速度会比一般SQL语句快很多

(2)语义分析,学过编译原理的都知道,这一步是非常重要的,ORACLE主要是分析SQL语句格式是否正确,各个对象是否存在,以及它是否有足够的权限执行

(3)视图转换,它会将涉及的视图的查询语句转换为较为简单的等效连接表达式,有些人认为视图一定执行速度会比使用表要快,其实不一定的,主要具体情况具体分析,只要把这篇文章真正理解,自己分析是不困难的;

(4)表达式转换。将复杂的SQL表达式转换为相应的对基表的查询语句。写SQL的标准

A.不要再WHERE字句中进行计算,如SELECT AT_ID FROM ARTICLE WHERE AT_ID >10*10000 AND AT_ID<(10+1)*10000是不允许的就是这个原理

B.注意数据类型的匹配

SELECT BK_ID FROM BOOK WHERE BK_PRICE>30 就比不上SELECT BK_ID FROM BOOK WHERE BK_PRICE>30.00好啦

(5)选择优化器,学过编译原理时候就知道,使用不用的优化器是会有不同的执行效率,当然,最好是能根据批量的SQL自己编一个特定的优化器

(6)选择连接方式。INFORMIX就有简单的归并连接 和排序-归并连接技术之分,主要看是否使用索引的问题。

(7)选择连接顺序。多表连接,oracle选择那一个对表先连接,并选择源数据表

(8)选择数据搜索路径,根据以上条件选择合适的数据搜苏路径,如选用全表搜索还是利用索引或是其他方式搜索

(9)到SQL中为该SQL语句找到一个共享SQL区,如已经有共享SQL区,则直接执行共享区内容。

2。执行

主要在于使用UPDATE和DELETE语句时,必须将行锁定,以免其他用户修改。ORACLE先从数据库缓冲区中寻找是否存在所要的数据块,如果存在,就直接读或修改,否则从物理文件中读到数据库缓冲区中。

3。返回结果

对SELECT 语句需要返回结果的语句,首先看是否需要排序,需要,则排序后返回给用户,然后根据内存的大小不同,可以一次取出一行数据,一可以一次取一组数据。这时,可能要用到数据结构中的外部排序,并归排序等算法,所以如内存允许的话,尽量大会提高性能的;

最后总结一下经用使用的SELECT的处理步骤:

打开游标
|
---------查看共享SQL区,是否有相同的SQL语句
| |
| 分析
| |
| 定义
------------------------|
|
-------------------------绑定变量
| |
| 捆绑
--------------------------|
|
并行处理
|
执行查询
|
返回结果
|
关闭游标

分享到:
评论

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    Oracle sql语句大全

    Oracle sql语句大全. sql语句的优化资料

    oracle Sql语句二

    oracle Sql语句二 oracle Sql语句二

    压测Oracle的SQL语句的性能情况

    标题"压测Oracle的SQL语句的性能情况"暗示了我们关注的是在高负载情况下,Oracle数据库处理SQL查询的能力。压力测试(Pressure Testing)是一种评估系统在极端工作条件下表现的方法,通过模拟大量并发用户执行SQL...

    oracle sql语句执行流程解析

    以上整个流程涵盖了SQL语句从客户端提交到服务器端处理,再到执行以及优化的全过程。了解这个流程对于数据库管理员和开发人员来说是非常重要的,因为它直接影响到数据库操作的效率和数据访问的速度。通过熟悉这些...

    Oracle SQL语句性能优化

    Oracle SQL语句性能优化是数据库管理中的关键环节,直接影响到系统的响应速度和资源利用效率。本文将详细探讨优化Oracle SQL语句的几个核心策略。 1. 选择合适的优化器 Oracle 提供了三种优化器:RULE(基于规则)...

    Oracle数据库sql语句 跟踪器

    Oracle数据库SQL语句跟踪器,通常被称为SQL Monitor,是一种强大的工具,用于监控和分析数据库中的SQL语句执行情况。在Oracle环境中,理解SQL语句的行为是优化数据库性能的关键。SQL Monitor提供实时视图,帮助DBA...

    oracle常用SQL语句(汇总版).docx

    Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...

    oracle sql语句学习

    总的来说,Oracle SQL语句学习是一个逐步深入的过程,从基础操作到高级技巧,再到实际应用,每个环节都需要耐心和实践。通过这份资料,你可以系统地学习并掌握这一强大的数据库语言,为你的IT职业生涯打下坚实的基础...

    Oracle基本sql语句

    Oracle数据库是全球最广泛使用的数据库管理系统之一,它遵循SQL标准,提供了一套强大的SQL语句,使得数据库操作变得高效和灵活。在Oracle数据库中,SQL语句是与数据库进行交互的主要方式。本文将总结一些Oracle基本...

    oracle利用批处理文件执行SQL语句,bat连接oracle数据库并执行语句

    在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...

    ORACLE数据库SQL语句美化器

    对ORACLE-SQL进行一些布局优化,更新它的格式

    [自己开发]一款非常好用的抓取Oracle数据库SQL语句的工具

    Oracle SQL Profiler,自己设计算法写的一款非常好用的抓取Oracle数据库SQL语句的工具,可以再没有源码的情况下监控ORACLE数据库服务器的v$sqlarea视图抓取出从点击开始按钮到点击结束按钮期间执行过的SQL语句。...

    Oracle中SQL语句执行效率的查找与解决

    综上所述,Oracle中SQL语句执行效率的查找与解决是一个复杂但系统性的过程。通过对资源消耗、执行计划和常见执行计划类型的深入了解,数据库管理员可以采取有效措施,优化查询性能,确保系统的高效稳定运行。

    sqlserver自动生成sql语句工具sqlserver转oracle

    本篇文章将详细探讨如何利用工具实现SQL Server自动生成SQL语句并转换到Oracle。 首先,标题中的"sqlserver自动生成sql语句工具"指的是可以分析SQL Server数据库结构和数据,自动生成对应的SQL创建语句的软件。这种...

    Oracle数据库sql转换mysql数据库工具

    "Oracle数据库sql转换mysql数据库工具" 提供了解决这一问题的解决方案,允许用户将Oracle数据库中的SQL语句或数据结构转换为MySQL兼容的格式。 在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,...

    oracle监听执行sql语句

    在Oracle数据库管理与维护过程中,有时候我们需要了解应用程序正在执行哪些SQL语句,这不仅有助于性能优化,还可以帮助我们诊断潜在的问题。通过监听执行SQL语句的方式,我们可以获取到当前会话正在执行的具体SQL...

    Oracle SQL语句跟踪

    Oracle SQL语句跟踪是数据库管理员和开发人员在优化SQL性能、定位问题或调试查询时常用的一种技术。在Oracle数据库系统中,SQL语句跟踪能够帮助我们收集关于SQL执行的详细信息,包括执行计划、资源消耗、等待事件等...

Global site tag (gtag.js) - Google Analytics