`

SQL 语句的执行步骤

阅读更多

一、sql语句的执行步骤:
1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。
2) 语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。
3)视图转换,将涉及视图的查询语句转换为相应的对基表查询语句。
4)表达式转换, 将复杂的 SQL 表达式转换为较简单的等效连接表达式。
5)选择优化器,不同的优化器一般产生不同的“执行计划”
6)选择连接方式, ORACLE 有三种连接方式,对多表连接 ORACLE 可选择适当的连接方式。
7)选择连接顺序, 对多表连接 ORACLE 选择哪一对表先连接,选择这两表中哪个表做为源数据表。
8)选择数据的搜索路径,根据以上条件选择合适的数据搜索路径,如是选用全表搜索还是利用索引或是其他的方式。
9)运行“执行计划”

二、oracle 共享原理:
        ORACLE将执行过的SQL语句存放在内存的共享池(shared buffer pool)中,可以被所有的数据库用户共享 当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的 执行路径. 这个功能大大地提高了SQL的执行性能并节省了内存的使用
三、oracle 语句提高查询效率的方法:1: where column in(select * from ... where ...); 2:... where exists (select 'X' from ...where ...); 第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询 使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间 Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中 避免使用having字句 避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销

SQL Select语句完整的执行顺序:

1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。


另外:一个查询语句各个部分的执行顺序:
--8)  SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
--(1)  FROM <left_table>
--(3)    <join_type> JOIN <right_table>
--(2)      ON <join_condition>
--(4)  WHERE <where_condition>
--(5)  GROUP BY <group_by_list>
--(6)  WITH {CUBE | ROLLUP}
--(7)  HAVING <having_condition>
--(10) ORDER BY <order_by_list>

 

 

 

SQL第一次执行比较慢,之后就快了的原因:

 慢主要在两块: 一是SQL的分析(语法,语意,词法,等等,然后还要pin到share pool, 然后生成执行计划)都是要时间的. 二是IO的发生,读数据从磁盘到cache中.
第二次这些就省了
分享到:
评论

相关推荐

    SQL 语句执行步骤

    ### SQL语句执行步骤 #### 一、引言 SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准语言。为了更好地理解和优化SQL查询过程,深入研究其内部执行机制至关重要。本文将详细介绍SQL语句...

    SQL语句执行过程详解

    SQL语句执行过程是一个涉及到客户端与服务器端交互、多个阶段的复杂过程,包含了对SQL语句的处理、解析、优化以及最终的执行。这个过程对于数据库管理员来说,需要对数据库内部结构有深入的了解,才能够完全掌握。 ...

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

    本文将深入探讨Oracle中SQL语句执行效率的查找与解决方法,特别关注于如何识别和优化那些导致性能瓶颈的查询。 ### Oracle SQL执行效率:查找与解决 #### 一、资源消耗分析 在Oracle中,SQL语句执行效率低下通常...

    NC后台sql语句执行的方式

    ### NC后台SQL语句执行方式详解 在NC系统中,SQL语句的执行是系统管理和数据操作的关键环节之一。根据给定的文件信息,本文将详细介绍三种不同的SQL执行方式及其应用场景,帮助读者更好地理解NC后台如何高效地处理...

    存储过程中怎么动态执行sql语句

    ### 动态执行SQL语句在Oracle中的应用 #### 标题解读 “存储过程中怎么动态执行SQL语句”这一标题表明文章将介绍如何在Oracle数据库的存储过程中编写能够动态执行的SQL语句。动态SQL是指在运行时才能确定其具体内容...

    SQL语句执行顺序说明

    ### SQL语句执行顺序说明 #### 一、SQL语句准备执行阶段 当SQL语句进入Oracle的库缓存后,为了确保其能够被正确执行,Oracle会经历一系列的检查和准备过程。这一阶段主要涉及以下几个步骤: 1. **语法检查**:...

    通过分析SQL语句的执行计划优化SQL(总结)

    - **顺序**:执行步骤的顺序,显示了数据如何被处理和返回。 5. **索引的影响**: 索引可以显著提升查询速度,但不是所有查询都能从索引中受益。执行计划会显示是否使用了索引,以及是全索引扫描还是索引查找。 ...

    SQL语句的执行过程.pptx

    语句执行步骤是SQL语句执行过程的最后一步。在这个步骤中,数据库系统会根据生成的执行计划实际执行SQL语句。 在SQL语句执行过程中,数据库系统还会使用共享池来存放以前执行过的SQL语句、PL/SQL代码和数据字典信息...

    创建索引对SQL语句执行的影响.pdf

    在SQL语句执行之前,Oracle会确定SQL语句的执行计划,并按照执行计划的步骤访问相应的表和索引。一旦执行计划确定下来,Oracle会按照这个执行计划完成SQL语句的执行,在SQL语句执行开始之后建立的索引不会改变SQL...

    odbcSQL语句执行

    执行SQL语句的过程通常包括以下步骤: 1. **连接数据库**:使用ODBC函数`SQLConnect`或`SQLDriverConnect`,提供数据源名称(DSN)、用户名和密码,建立与数据库的连接。 2. **准备SQL语句**:通过`SQLPrepare`函数...

    oracle sql语句执行流程解析

    在执行完SQL语句之后,如果该语句将会被再次执行,那么其执行计划可能会被保存到数据高速缓存中,以便下次可以直接使用,省略语法、语义和权限检查的步骤,进一步提高效率。 以上整个流程涵盖了SQL语句从客户端提交...

    SQL Server 2005 定时执行SQL语句的方法

    SQL SERVER 2005有定时任务,你可以启动一下。不过要想更加直观的控制,直接写一个程序,定时执行你的存储过程...“步骤” — 设置步骤名称 — “类型”T-SQL — 选择数据库 — “命令”输入SQL语句 “计划” — “新建

    SQL语句的执行原理及顺序

    每一步操作都会生成一个虚拟表,作为下一个执行步骤的输入。了解 SQL 语句的执行顺序可以帮助开发人员更好地优化查询语句,提高数据库性能。 此外,在使用 OUTER JOIN 时,需要注意 ON 筛选器和 WHERE 筛选器的区别...

    Sql Server ExpressProfiler 监视Sql语句

    它允许数据库管理员和开发人员实时跟踪和记录数据库服务器上的事件,包括SQL语句的执行情况,以优化性能、查找问题或调试应用程序。在公司环境中,由于未安装官方的Profiler,你可能已经下载了第三方的...

    DB查询分析器批量执行多条SQL语句并查看各自的执行时间

    **步骤B**:等待所有SQL语句执行完成。 **步骤C**:在结果页面中查看每条SQL语句的执行时间和返回结果。 - **图1**:显示第一条SQL语句的执行时间为00:00:02:703,返回结果为345040条记录。 - **图2**:第二条SQL...

    解决python 执行sql语句时所传参数含有单引号的问题

    在Python编程中,当我们需要执行SQL语句时,有时会遇到参数中包含单引号(')的情况,这可能导致SQL语法错误。在描述的问题中,作者在尝试插入数据到`teacher`表时遇到了编程错误,因为`t_info`字段的值`result2`...

    通过分析SQL语句的执行计划优化SQL

    ### 通过分析SQL语句的执行计划优化SQL 在数据库管理与开发过程中,SQL语句的性能优化至关重要。本文将详细介绍如何理解SQL及其执行计划,并给出具体的优化策略。通过优化SQL,可以显著提升应用程序的响应速度及...

    批处理执行sql语句

    在这个“批处理执行sql语句”示例中,我们可以深入理解批处理的运用。 首先,`升级数据库批处理.bat` 是一个批处理文件,通常扩展名为 .bat 的文件是Windows操作系统中的批处理脚本,用于执行一系列命令。在这个...

    Oracle的SQL语句执行效率问题查找与解决方法文.pdf

    Oracle SQL 语句执行效率问题查找与解决方法 一、 Oracle SQL 语句执行效率问题查找方法 Oracle 数据库系统中, SQL 语句的执行效率问题是一个非常重要的问题。在实际应用中,我们经常会碰到一些性能不佳的 SQL ...

Global site tag (gtag.js) - Google Analytics