1、SQL语句尽量用大写的;

因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。

2、WHERE子句中的连接顺序:

ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他

WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。

3、SELECT子句中避免使用 * :

ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字

典完成的, 这意味着将耗费更多的时间。

4、减少访问数据库的次数(使用游标等等):

ORACLE在内部执行了许多工作: 解析SQL语句,估算索引的利用率,绑定变量,读数据块等。

5、避免使用耗费资源的操作:

带有DISTINCT、UNION、MINUS、INTERSECT、ORDER BY的SQL语句会启动SQL引擎执行

耗费资源的排序(SORT)功能。DISTINCT需要一次排序操作,而其他的至少需要执行两次排序。

通常,带有UNION、MINUS、INTERSECT的SQL语句都可以用其他方式重写。

如果数据库的SORT_AREA_SIZE调配得好,使用UNION,MINUS,INTERSECT也是可以考虑。

6、优化GROUP BY:

提高GROUP BY 语句的效率,可以通过将不需要的记录在GROUP BY之前过滤掉。

下面两个查询返回相同结果但明显第二个效率更高。

低效:

 SELECT JOB,AVG(AGE) FROM TEMP
GROUP BY JOB HAVING JOB = 'STUDENT' OR JOB = 'MANAGER';

高效:

SELECT JOB,AVG(AGE) FROM EMP
WHERE JOB = 'STUDENT' OR JOB = 'MANAGER' GROUP BY JOB;

7、用>=替代>:

高效:

SELECT * FROM TEMP WHERE ID >=4;

低效:

SELECT * FROM TEMP WHERE ID >3;

原因:前者DBMS将直接跳到第一个ID等于4的记录而后者将首先定位到ID=3的记录并且向前扫描到第一个ID大于3的记录。

8、避免在索引列上使用计算:

低效:

SELECT … FROM TEMP WHERE SAL * 12 > 25000;

高效:

SELECT … FROM TEMP WHERE SAL > 25000/12;

Oracle SQL语句之常见优化方法总结--不定更新的更多相关文章

  1. Oracle SQL语句之常见优化方法总结

    1.用EXISTS替换DISTINCT 当SQL包含一对多表查询时,避免在SELECT子句中使用DISTINCT,一般用EXIST替换,EXISTS(低效): SELECT DISTINCT USER ...

  2. Oracle SQL语句性能优化方法大全

    Oracle SQL语句性能优化方法大全 下面列举一些工作中常常会碰到的Oracle的SQL语句优化方法: 1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的 ...

  3. oracle管理优化必备语句以及oracle SQL语句性能调整

    本文转自http://www.dataguru.cn/article-3302-1.html oracle数据库管理优化必备语句: 1. SELECT T.START_TIME,T.USED_UBLK ...

  4. Oracle sql语句执行顺序

    sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...

  5. [转]关于oracle sql语句查询时表名和字段名要加双引号的问题

    oracle初学者一般会遇到这个问题.   用navicat可视化创建了表,可是就是不能查到!   后来发现②语句可以查询到 ①select * from user; 但是,我们如果给user加上双引 ...

  6. 《MySQL慢查询优化》之SQL语句及索引优化

    1.慢查询优化方式 服务器硬件升级优化 Mysql服务器软件优化 数据库表结构优化 SQL语句及索引优化 本文重点关注于SQL语句及索引优化,关于其他优化方式以及索引原理等,请关注本人<MySQ ...

  7. Oracle SQL语句追踪

    Oracle SQL语句追踪 1   SQL语句追踪 追踪SQL语句的执行过程需要在Oracle服务器端进行,Oracle服务器端会检测并记录访问进程所执行的所有SQL语句.下面使用的命令都是在命令行 ...

  8. Oracle SQL语句执行过程

    前言 QQ群讨论的时候有人遇到这样的问题:where子句中无法访问Oracle自定义的字段别名.这篇 博客就是就这一问题做一个探讨,并发散下思维,谈谈SQL语句的执行顺序问题. 问题呈现 直接给出SQ ...

  9. Oracle SQL语句执行步骤

    转自:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762345.html Oracle中SQL语句执行过程中,Oracle内部解析原理如下 ...

随机推荐

  1. 取消Fragment切换时间,Fragment+ViewPager静止滑动,去掉默认的滑动效果

    import android.content.Context; import android.support.v4.view.ViewPager; import android.util.Attrib ...

  2. 最大流sap

    带当前弧优化 gap优化的sap 甚至省去了开始的bfs分层 虽然花了一些时间了解原理 但是感觉不亏 现在能完全独立靠原理写出具体实现了 #include<cstdio> #include ...

  3. What's the meaning of unqualified-id?

    catch( const std::runtime_error & e) { .... } When compile, met an error: error: expected unqual ...

  4. Python 学习笔记5 变量-列表

    列表是python常用的一种变量. 是由一些列按照特定顺序排列的元素组成的.你可以创建包含字母表中的所有字母,数字.可以将任何东西都加入到列表中. 通常情况下,列表中都包含多个元素,所以建议变量的名称 ...

  5. Maven项目无法找到mybatis的xml映射文件

    通常我们的xml映射文件会放在源码中,普通的java项目在编译时可以将src下的xml放到classes文件中. 但maven项目编译时是不会将xml放到classes文件中,从而导致我们的mybat ...

  6. 2019-04-15 Python中的面向对象学习总结

    一.面向对象总结: (1)三要素:封装,继承,多态                                       详细介绍链接:https://www.jianshu.com/p/68a ...

  7. 安装pwntools及对于解决问题方法搜索的经验总结

    安装pwntools 按照网站(https://www.cnblogs.com/xiao3c/p/6799745.html) 中的教程进行安装 下载pwntools 输入命令 git clone ht ...

  8. VMware虚拟机共享宿主机硬盘步骤

    1.打开设置 2. 进去设置后,选择选项选项卡,启用文件夹共享,添加文件夹即可 注:虚拟机安装完成后我先装了 VMwareTools,然后进行的共享操作,貌似不安装时无法启用第三步,即 总是启用 按钮 ...

  9. 2018-2019-2 网络对抗技术 20165321 Exp4 恶意代码分析

    1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,sys ...

  10. [TJOI2009]猜数字

    题目描述 现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示.其中第二组中的数字是两两互素的.求最小的非负整数n,满足对于任意 ...