`
fourfire
  • 浏览: 413978 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Oracle数据库Where条件执行顺序

    博客分类:
  • db
阅读更多
由于SQL优化起来比较复杂,并且还会受环境限制,在开发过程中,写SQL必须必须要遵循以下几点的原则:

  1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
即:最大地减少数据范围的条件写在后面,oracle对sql的解析是从后向前的

  例如:

  (低效)

  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’;

select * from gzl_action_define where    id like '%12%' and name='合同签订' (快)
select * from gzl_action_define where     name='合同签订' and id like '%12%' (慢)
  2.SELECT子句中避免使用’*’

  当在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法.可是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.

  3.使用表的别名(Alias)

  当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.

  注:Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属。
分享到:
评论

相关推荐

    Oracle数据库表中字段顺序的修改方法

    本文将详细介绍如何在Oracle数据库中修改表字段的顺序。 首先,让我们看看如何在Oracle中新增字段。新增字段的基本语法是: ```sql alter table tablename add (column datatype [default value][null/not null],…...

    oracle数据库表中修改字段的顺序

    ### Oracle数据库表中修改字段顺序的方法 在Oracle数据库中,我们常常会遇到需要调整表中字段顺序的情况。例如,为了优化查询效率或是更好地符合业务逻辑,我们可能希望更改某些字段的位置。在过去,如果想要改变一...

    东北石油大学Oracle数据库期末复习资料

    * WHERE子句用于指定检索条件。 * ORDER BY子句用于指定检索结果的排序顺序。 四、Oracle数据库优化技术 * Oracle数据库优化技术包括:索引优化、查询优化、存储过程优化等。 * 索引优化:索引可以提高查询速度,...

    oracle数据库开发面试必备

    ### Oracle数据库开发面试必备知识点详解 #### 一、Oracle SQL查询优化 1. **选择条件顺序**:在Oracle中,合理的顺序安排对于提高查询效率至关重要。例如,在`FROM`子句中,通常会将表(driving table)放在前面...

    更改Oracle表中字段的顺序的终极方法

    在Oracle数据库管理中,有时我们可能需要对表中的字段顺序进行调整。然而,通常的做法是通过备份、删除原表并重建来达到这一目的,这种方法不仅耗时而且繁琐。幸运的是,经过一番研究与探索后发现,实际上有一种更加...

    Oracle数据库介绍-2008-12-12及介绍Oracle常见的问题

    ### Oracle数据库介绍与常见问题详解 #### 一、Oracle数据库结构设计概要 Oracle数据库是一种关系型数据库管理系统(RDBMS),被广泛应用于企业级数据管理领域。为了更好地理解和使用Oracle数据库,了解其基本结构是...

    Oracle数据库讲义.pdf

    ### Oracle数据库学习知识点详解 #### 一、Oracle数据库概述 - **Oracle数据库10g**:本书主要基于Oracle 10g版本编写,虽然技术在不断进步,但Oracle数据库的核心概念和技术仍然保持一致,适用于其他版本的学习。 ...

    oracle数据库优化大全(面试和学习都适用)

    ORACLE 采用自下而上的顺序解析 WHERE 子句,根据这个原理,表之间的连接必须写在其他 WHERE 条件之前,那些可以过滤掉最大数量记录的条件必须写在 WHERE 子句的末尾。 3. SELECT 子句中避免使用 ‘*’ ORACLE 在...

    Oracle数据库SQL优化总结

    2. **WHERE子句中的连接顺序**:从下往上解析WHERE子句,将能够过滤最多记录的条件放在最后,这样可以减少处理的数据量。 3. **避免在SELECT中使用通配符'*'**:使用具体的列名代替'*',以减少解析时间和内存消耗。...

    Oracle 数据库优化技术手册.pdf

    在编写SQL语句时,应尽量按照自下而上的顺序来编写WHERE子句中的连接条件,并将能够过滤掉最多记录的条件放在末尾。在SELECT子句中,避免使用‘*’,而应该明确列出需要查询的列,这样可以减少数据库解析SQL语句时的...

    Oracle数据库关于SQL的执行计划

    ### Oracle数据库关于SQL的执行计划 #### 1. Oracle 的 Optimizer 及其相关知识 在 Oracle 数据库中,执行 SQL 查询之前会先生成一个执行计划(Execution Plan),该计划由 Oracle 的优化器(Optimizer)根据一...

    oracle数据库性能优化宝典

    《Oracle数据库性能优化宝典》是一本专注于提升Oracle数据库运行效率的专业指南,旨在帮助数据库管理员和开发者更好地理解和应用性能优化技巧。以下将详细介绍其中的一些关键知识点: 1. **选用适合的ORACLE优化器*...

    Oracle数据库导出文本的方法

    Oracle 数据库导出文本的方法 Oracle 数据库导出文本的方法是 Oracle 数据库的入门级应用,旨在介绍如何将 Oracle 数据库中的数据导出到文本文件中。在实际应用中,我们经常需要将查询结果导出到文本文件中,以便于...

    Oracle数据库死锁查询语句

    Oracle数据库死锁是数据库系统中常见的问题,它发生在两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象。当这种情况发生时,如果没有外力干预,这些事务都将无法继续执行,形成一种僵局。了解如何...

    oracle数据库优化PPT

    此外,编写高效的WHERE子句也是关键,比如通过调整条件顺序,可以显著影响查询速度。 另外,避免不必要的GROUP BY操作,因为GROUP BY通常伴随着较高的计算代价,只有在确实需要聚合数据时才应使用。同时,注意优化...

    oracle数据库期末考试试题及答案(一).pdf

    Oracle数据库期末考试试题涉及到多个知识点,包括SQL查询优化、数据库对象、表空间管理、时间日期函数、用户模式、连接操作、游标管理、数据传输、事务处理、性能调整等。 1. **SQL查询优化**: - `EXPLAIN PLAN` ...

    Oracle数据库处理海量数据的技术分析.pdf

    (1)WHERE 子句顺序的选择 (2)索引的创建和维护 (3)数据分区和表空间的设计 本文通过对 Oracle 数据库在处理海量数据时的常用技术进行分析,将多种技术结合使用,从而提高搭载 Oracle 数据库的应用系统处理...

    Oracle数据库性能优化浅析.pdf

    Oracle数据库是一种广泛应用于企业级环境的大型关系型数据库系统,其性能优化是数据库管理中至关重要的环节。随着数据量的不断增长和数据库访问量的增加,性能的下降是一个普遍问题,这直接影响了业务的效率和数据...

    SQL语句执行顺序说明

    ### SQL语句执行顺序说明 #### 一、SQL语句准备执行阶段 当SQL语句进入Oracle的库缓存后,为了确保其...通过遵循上述步骤和技巧,可以有效地提高SQL语句在Oracle数据库中的执行效率,从而提升应用程序的整体性能。

    Oracle数据库的学习总结一

    以上内容概括了Oracle数据库中关于数据表操作、SQL 查询语句的基础使用方法及其相关的高级特性,如条件筛选、数据排序等。这些基础知识对于初学者来说至关重要,并且也是深入学习Oracle数据库管理系统的良好开端。

Global site tag (gtag.js) - Google Analytics