sql优化比较复杂,且受环境限制,但开发过程中,写sql要遵循最起码的原则.如下:
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
例如:
/* 低效 */
SELECT … FROM EMP E WHERE SAL > 50000 AND JOB = ‘MANAGER’ AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);
/* 高效 */
SELECT … FROM EMP E WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO) AND SAL > 50000 AND JOB = ‘MANAGER’;
2.SELECT子句中避免使用’*’
当在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法.可是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.
3. 使用表的别名(Alias)
当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.
(Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属)
分享到:
相关推荐
执行顺序是从左到右,因此应先处理那些能过滤掉大量记录的条件,以尽早减少数据量。 3. **GROUP BY子句**:如果SQL语句包含GROUP BY子句,则会按照指定的列进行分组。分组的顺序是从左到右。 4. **HAVING子句**:...
ORACLE-Select语句执行顺序及如何提高Oracle基本查询效率 在Oracle中,SQL语句的执行顺序是非常重要的。了解了SQL语句的执行顺序,我们可以更好地优化SQL语句,提高查询效率。下面我们将详细介绍ORACLE-Select语句...
### 更改Oracle表中字段顺序的方法 在Oracle数据库管理中,有时我们可能需要对表中的字段顺序进行调整。然而,通常的做法是通过备份、删除原表并重建来达到这一目的,这种方法不仅耗时而且繁琐。幸运的是,经过一番...
虽然存在优先级规则,但为了避免混淆,通常建议使用括号明确表达式执行顺序。 WHERE子句的运用非常广泛,可以通过组合不同的字段、比较运算符和逻辑运算符,实现对复杂查询需求的支持。在实际的数据库管理工作中,...
### Oracle 查看当前会话执行的SQL语句 在Oracle数据库管理中,有时我们需要了解某个特定会话(Session)正在执行哪些SQL语句。这在性能调优、问题诊断等场景下尤为重要。以下将详细介绍如何通过不同的方法来查看...
2. WHERE 子句中的连接顺序:Oracle 采用自下而上的顺序解析 WHERE 子句。因此,表之间的连接必须写在其他 WHERE 条件之前,那些可以过滤掉最大数量记录的条件必须写在 WHERE 子句的末尾。 3. SELECT 子句中避免...
SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;...
### Oracle数据库表中修改字段顺序的方法 在Oracle数据库中,我们常常会遇到需要调整表中字段顺序的情况。例如,为了优化查询效率或是更好地符合业务逻辑,我们可能希望更改某些字段的位置。在过去,如果想要改变一...
它揭示了Oracle数据库如何执行SQL语句的详细步骤,包括数据的获取方式、处理顺序以及使用的索引等信息。以下是对执行计划中涉及的一些核心概念的详细解释: 1. **Rowid**: Rowid是一个唯一标识数据库中每行数据的...
### SQL查询原理及执行顺序详解 SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言,其查询原理和执行顺序对于数据库性能优化至关重要。本文将深入探讨SQL查询的执行过程,帮助读者理解如何...
今天遇到一个求某月所有天数的统计结果,如果某日的结果是0也需要显示出来...一开始我用的左连接,用on做为两表关联条件,用where作为过滤条件,但是发现0的数据根本不显示,后来把where关键字去掉,把过滤条件都放到on
2. **执行顺序(Execution Order)**:显示了Oracle执行各个操作的顺序。 3. **成本(Cost)**:优化器预估的执行每个操作所需的CPU和I/O资源的成本。 4. **行源(Rows Produced)**:预计每一步将返回多少行数据...
Predicate 是查询中的 WHERE 限制条件。Row Source 和 Predicate 是执行计划中两个非常重要的概念。 Driving Table 概念 Driving Table 又称为外层表,是执行计划中描述如何访问数据库中的数据的表。Driving Table...
例如,如Listing A所示的查询,通过使用"ordered"提示,我们可以强制Oracle按照WHERE子句中的顺序进行评估。 其次,"ordered_predicates"提示则用于控制WHERE子句中布尔判断的评估顺序。Oracle默认的评估规则可能会...
本文将详细介绍几种有效的方法来提高Oracle中SQL的执行效率,包括选择合适的表名顺序、优化WHERE子句中的连接顺序、减少不必要的数据库访问等策略。 #### 1. 选择最有效率的表名顺序 在基于规则的优化器中,Oracle...
* Oracle 采用自下而上或自右向左的顺序解析 WHERE 子句 * 表之间的连接必须写在其他 WHERE 条件之前 七、SELECT 子句中避免使用“*” * Oracle 在解析 SQL 语句的时候,对于“*”将通过查询数据库字典来将其转换...
- **查询条件不匹配**:如果 WHERE 子句中的条件与索引的列顺序不一致,或者使用了函数操作,也可能导致索引无法被有效利用。 - **表扫描成本较低**:对于较小的表,全表扫描的成本可能比使用索引更低,尤其是在...
了解并分析这些概念,有助于我们制定有效的查询优化策略,例如创建适当的索引、调整连接顺序、优化谓词条件等,从而提升Oracle数据库的整体性能。在实际工作中,可以使用EXPLAIN PLAN或SQL Trace等工具来查看和分析...
在这篇文章中,我们将详细地讲述 SQL 语句的解析顺序,包括 FROM、WHERE、GROUP BY、HAVING、SELECT 等子句的执行顺序。 首先,FROM 子句是 SQL 语句的第一步骤,它标识了需要查询的表,并生成一个虚拟表 VT1。FROM...