`

sql查询原理和Select执行顺序(sql优化)

sql 
阅读更多
本文转载自csdn博客
sql查询原理和Select执行顺序
关键字: 数据库
一 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对结果集进行排序。

本文转载自:http://blog.csdn.net/luxiaoyu_sdc/article/details/6539363
分享到:
评论

相关推荐

    SQL Select语句完整的执行顺序

    ### SQL Select 语句完整的执行顺序 在数据库查询语言(SQL)中,`SELECT`语句是最常用的查询数据的方式之一。正确理解`SELECT`语句的执行顺序对于编写高效、准确的查询至关重要。本文将详细介绍SQL Select语句的...

    SQL语句的执行原理及顺序

    了解 SQL 语句的执行顺序可以帮助开发人员更好地优化查询语句,提高数据库性能。 SQL 语句的执行顺序可以分为 11 个步骤: 1. FROM 子句:首先对 FROM 子句中的前两个表执行一个笛卡尔乘积,生成虚拟表 vt1。 2. ...

    sql查询的逻辑执行顺序

    为了更高效地理解和优化SQL查询,了解其背后的执行逻辑是十分必要的。本文将详细解析SQL查询的基本逻辑执行流程,并针对每个步骤进行深入探讨。 #### 二、SQL查询的逻辑执行顺序概述 根据提供的内容,我们可以总结...

    SQL语句中SELECT语句的执行顺序

    ### SQL语句中SELECT语句的执行顺序 ...了解`SELECT`语句的执行顺序对于优化查询性能、提高查询效率非常重要。掌握这些知识可以帮助开发人员更好地设计查询逻辑,从而在实际应用场景中实现更高效的数据检索。

    SELECT语句执行顺序

    了解SELECT语句的执行顺序对于编写高效、正确的SQL查询至关重要。本文将详细介绍SELECT语句各部分的执行顺序,并通过具体示例加深理解。 #### SELECT语句的基本结构 SELECT语句的基本结构如下: ```sql SELECT ...

    SQL语句执行顺序说明

    SQL语句的执行顺序决定了其性能表现,理解这一点对于优化查询至关重要。以下是一些基本的执行顺序: 1. **FROM子句**:首先处理FROM子句,确定需要操作的表或视图。Oracle从右向左处理表名,最后一个表名为驱动表。...

    sql执行顺序大总结

    今天,我们将深入探讨 SQL 执行顺序的每一个步骤,从 FROM 到 SELECT,了解每一个步骤的执行顺序和细节。 FROM 步骤 首先,从 FROM 子句开始执行,执行笛卡尔乘积,生成虚拟表 vt1。这个步骤会将前两个表进行笛卡尔...

    SQL查询思路优化与语句优化.pdf

    本文还讨论了SQL查询思路优化的方法,包括使用EXISTS和IN代替子查询、使用索引、避免使用SELECT \*、使用合适的连接方式和避免使用OR条件等。这些方法可以提高查询速度,简化管理和提高数据库性能。 关键词:SQL...

    SQL优化和SQL执行分析工具Explain的使用详解和示例

    SQL优化一直是数据库领域的重要话题,特别是在大数据量处理和高并发访问的场景下,优化后的SQL查询能够显著提升系统的响应速度和资源利用率。对于数据库管理员(DBA)和开发人员来说,掌握SQL优化技巧和工具是必不可少...

    SQLServer脚本批量执行工具

    总的来说,SQLServer脚本批量执行工具是数据库管理员的得力助手,它通过自动化和优化SQL脚本的执行流程,降低了工作负担,提高了工作效率,同时也增强了数据库管理和维护的准确性。在日常工作中,熟练掌握这类工具的...

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

    执行计划是数据库引擎执行SQL语句的蓝图,包含了查询数据的顺序、使用的索引、执行的运算符(如连接、分组、排序)以及预计的成本。每个操作都有一个成本值,表示完成该操作所需的资源量。数据库会选取总成本最低的...

    Sql Server查询优化

    此外,SQL Server提供了诸如查询执行计划、性能监视器和索引优化向导等工具,可以帮助数据库管理员更高效地进行查询优化。通过综合运用这些技术和工具,可以有效地提升SQL Server数据库的性能和响应速度。

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

    本文主要探讨了如何通过分析SQL语句的执行计划来优化查询性能,涉及到共享SQL语句、ROWID、Recursive SQL、Row Source、Driving Table和Probed Table等相关概念。 首先,SQL语句的共享是ORACLE数据库提高性能的一种...

    SQL_Server_2008查询性能优化

    SQL Server通过解析查询语句,生成一个执行计划,然后按照这个计划来执行查询。优化查询计划是提高性能的关键。使用`EXPLAIN PLAN`或`SET SHOWPLAN_ALL ON`可以查看查询计划,帮助我们分析查询的运行方式,找出可能...

    oracle 查看当前会话执行的sql语句

    以上查询可以帮助我们识别出那些执行成本高、磁盘读取频繁或处理大量行的SQL语句,从而进行进一步的优化工作。 通过上述方法,我们可以有效地监控和分析Oracle数据库中的SQL执行情况,这对于提高系统的整体性能具有...

    sql查询优化规则

    SQL语句的执行顺序对于理解查询如何进行以及如何优化查询至关重要。以下是一般情况下SQL语句的执行流程: 1. **FROM:** 对FROM子句中的前两个表执行交叉连接(笛卡尔积),生成虚拟表VT1。 2. **ON:** 对VT1应用ON...

    HiveSQL编译原理

    总结来说,HiveSQL编译原理是Hive处理SQL查询的核心机制,它包括词法分析、语法分析、逻辑规划、优化、物理规划和执行等多个阶段。理解这一原理对于提升Hive查询性能、优化大数据处理流程具有重要意义。在实际工作中...

    ORACLE-Select语句执行顺序及如何提高Oracle基本查询效率.pdf

    ORACLE-Select语句执行顺序及如何提高Oracle基本查询效率 在Oracle中,SQL语句的执行顺序是非常重要的。了解了SQL语句的执行...了解SQL语句的执行顺序和Oracle共享原理,我们可以更好地优化SQL语句,提高查询效率。

    SQL语句执行深入讲解(MySQL架构总览-查询执行流程-SQL解析顺序)

    3. 对于SELECT查询,MySQL会使用查询优化器生成执行计划,考虑各种可能的执行路径,如索引选择、连接顺序、子查询优化等,以达到最快的执行速度。 4. 接下来,执行计划会被执行,访问控制模块检查用户权限,表管理...

Global site tag (gtag.js) - Google Analytics