iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >Oracle系列:(31)Oracle SQL语句优化
  • 788
分享到

Oracle系列:(31)Oracle SQL语句优化

2024-04-02 19:04:59 788人浏览 独家记忆
摘要

(01)选择最有效率的表名顺序(笔试常考)       oracle的解析器按照从右到左的顺序处理FROM子句中的表名,     &nb


(01)选择最有效率的表名顺序(笔试常考) 

      oracle的解析器按照从右到左的顺序处理FROM子句中的表名, 

      FROM子句中写在最后的表将被最先处理,

      在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表放在最后,

      如果有3个以上的表连接查询,那就需要选择那个被其他表所引用的表放在最后。

      例如:查询员工的编号,姓名,工资,工资等级,部门名

      select emp.empno,emp.ename,emp.sal,salgrade.grade,dept.dname
      from salgrade,dept,emp
      where (emp.deptno = dept.deptno) and (emp.sal between salgrade.losal and salgrade.hisal)


      1)如果三个表是完全无关系的话,将记录列名最少的表,写在最后,然后依次类推

      2)如果三个表是有关系的话,将引用最多的表,放在最后,然后依次类推



(02)WHERE子句中的连接顺序(笔试常考)  

      ORACLE采用自右而左的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之左,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的之右。  

      例如:查询员工的编号,姓名,工资,部门名  

      select emp.empno,emp.ename,emp.sal,dept.dname
      from emp,dept
      where (emp.deptno = dept.deptno) and (emp.sal > 1500)

 

 

(03)SELECT子句中避免使用*号

      ORACLE在解析的过程中,会将*依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间

      select empno,ename from emp;


(04)使用DECODE函数来减少处理时间

      使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表


(05)整合简单,无关联的数据库访问


(06)用TRUNCATE替代DELETE

   

(07)尽量多使用COMMIT

      因为COMMIT会释放回滚点


(08)用WHERE子句替换HAVING子句

      WHERE先执行,HAVING后执行

     

(09)多使用内部函数提高sql效率

     

(10)使用表的别名

      salgrade s

     

(11)使用列的别名

      ename e


(12)用索引提高效率

      在查询中,善用索引

      

(13)字符串型,能用=号,不用like

      因为=号表示精确比较,like表示模糊比较 


(14)SQL语句用大写的

      因为Oracle服务器总是先将小写字母转成大写后,才执行

      在eclipse中,先写小写字母,再通过ctrl+shift+X转大写;ctrl+shift+Y转小写


(15)避免在索引列上使用NOT

      因为Oracle服务器遇到NOT后,他就会停止目前的工作,转而执行全表扫描


(16)避免在索引列上使用计算

      WHERE子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描,这样会变得变慢 

      例如,SAL列上有索引,

      低效:

      SELECT EMPNO,ENAME
      FROM EMP 
      WHERE SAL*12 > 24000;

      高效:

      SELECT EMPNO,ENAME
      FROM EMP
      WHERE SAL > 24000/12;


(17)用 >= 替代 >

      低效:

      SELECT * FROM EMP WHERE DEPTNO > 3   

      首先定位到DEPTNO=3的记录并且扫描到第一个DEPT大于3的记录

      高效:

      SELECT * FROM EMP WHERE DEPTNO >= 4  

      直接跳到第一个DEPT等于4的记录


(18)用IN替代OR

      select * from emp where sal = 1500 or sal = 3000 or sal = 800;
      select * from emp where sal in (1500,3000,800);


(19)总是使用索引的第一个列

      如果索引是建立在多个列上,只有在它的第一个列被WHERE子句引用时,优化器才会选择使用该索引

      当只引用索引的第二个列时,不引用索引的第一个列时,优化器使用了全表扫描而忽略了索引

      create index emp_sal_job_idex

      on emp(sal,job);

      ----------------------------------

      select *

      from emp  

      where job != 'SALES';      


(20)避免改变索引列的类型,显示比隐式更安全 

      当字符和数值比较时,ORACLE会优先转换数值类型到字符类型 

      select 123 || '123' from dual;







您可能感兴趣的文档:

--结束END--

本文标题: Oracle系列:(31)Oracle SQL语句优化

本文链接: http://www.lsjlt.com/news/52132.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle系列:(31)Oracle SQL语句优化
    (01)选择最有效率的表名顺序(笔试常考)       ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,     &nb...
    99+
    2024-04-02
  • 列出oracle dbtime得sql语句
    可以根据dbtime 查看数据库得繁忙程度,获取某个快照得awr报告,进行分析 -------------------------------------------------------------...
    99+
    2024-04-02
  • oracle优化sql语句的步骤是什么
    优化Oracle SQL语句的步骤如下: 分析查询性能问题:首先要确定哪些SQL语句需要优化,通过Oracle的性能监视工具(如S...
    99+
    2024-03-13
    oracle
  • ORACLE SQL语句优化技术要点解析
    操作符优化: IN 操作符   用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。   但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与...
    99+
    2024-04-02
  • oracle怎么删除序列的sql语句
    要删除Oracle中的序列,可以使用以下SQL语句:```sqlDROP SEQUENCE sequence_name;```其中,...
    99+
    2023-08-25
    oracle sql
  • Oracle中如何优化connect by语句
    Oracle中如何优化connect by语句,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。执行SQL:SELECT A...
    99+
    2024-04-02
  • oracle创建序列的sql语句怎么写
    要在Oracle中创建一个序列,可以使用以下SQL语句: CREATE SEQUENCE sequence_name START W...
    99+
    2024-03-14
    oracle
  • 如何优化SQL语句
    这篇文章主要介绍“如何优化SQL语句”,在日常操作中,相信很多人在如何优化SQL语句问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何优化SQL语句”的疑惑有所帮助!接下来,...
    99+
    2024-04-02
  • SQL语句怎样优化
    这篇文章主要介绍了SQL语句怎样优化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。(1) 选择最有效率的表名顺序 (只在基于规则的...
    99+
    2024-04-02
  • oracle中对于复杂的SQL语句怎么进行优化
    本篇内容主要讲解“oracle中对于复杂的SQL语句怎么进行优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle中对于复杂的SQL语句怎么进行优化”吧...
    99+
    2024-04-02
  • oracle怎么写sql语句
    编写 oracle sql 语句需要遵循以下步骤:1. 连接到数据库;2. 选择要检索的列;3. 指定条件(可选);4. 对结果进行排序(可选);5. 限制结果数量(可选);6. 使用聚...
    99+
    2024-04-19
    oracle sql语句 聚合函数
  • SQL UPDATE语句怎么优化
    要优化SQL UPDATE语句,可以考虑以下几个方面:1. 限制更新的行数:如果你只需要更新部分记录,可以使用WHERE子句...
    99+
    2023-09-05
    SQL
  • sql语句的优化方式
    这篇文章主要讲解了“sql语句的优化方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“sql语句的优化方式”吧! 1.合理使用索引 索引是中重要的数据结...
    99+
    2024-04-02
  • oracle用的是sql语句吗
    是的,oracle使用sql语句。sql(结构化查询语言)是oracle主要的数据操作语言,用于创建和管理数据库对象,检索和更新数据,以及执行复杂的数据操作和查询。oracle支持广泛的...
    99+
    2024-04-19
    oracle sql语句
  • Oracle在PL/SQL中嵌入SQL语句
    PL/SQL块中只能直接嵌入SELECT、DML(INSERT,UPDATE,DELETE)以及事务控制语句(COMMIT,ROLLBACK,SAVEPOINT), 而不能直...
    99+
    2024-04-02
  • mysql的sql语句如何优化
    要优化MySQL的SQL语句,可以采取以下几个方法:1. 使用索引:使用适当的索引可以大大提高查询性能。可以使用`EXPLAIN`命...
    99+
    2023-09-27
    mysql sql
  • MySQL常见的sql优化语句
    本篇内容介绍了“MySQL常见的sql优化语句”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!大批量插入数据...
    99+
    2024-04-02
  • 怎么优化SQL查询语句
    这篇文章主要讲解了“怎么优化SQL查询语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么优化SQL查询语句”吧!1、 首先要搞明白什么叫执行计划执行计划...
    99+
    2024-04-02
  • oracle SQL优化器SQL Tuning Advisor (STA)
    一  创建测试数据 SQL> conn scott/oracle Connected. SQL> create table obj as select * from...
    99+
    2024-04-02
  • Oracle分布式查询语句的性能优化
    分析: 由于优化器无法判断或获得远端表的统计信息,故原执行计划默认会采取把远程表(无论大小)拉到本地再连接的方式执行, 这样如果远程表较大的情况将会比较缓慢,像上述查询耗时在1分钟以上。 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作