Oracle中SQL的性能优化

简介: 【IT168技术文档】1、用EXISTS替代IN,NOT EXISTS替代NOT IN: 在子查询中,NOT在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下,使用EXISTS(或NOTEXISTS)通常将提高查询的效率.     SELECT AND EXISTS (SELECT ‘X' FROM DEPT WHERE DEPT.DEPTN

IT168技术文档】1、用EXISTS替代IN,NOT EXISTS替代NOT IN 在子查询中,NOT在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下,使用EXISTS(NOTEXISTS)通常将提高查询的效率.

    SELECT AND EXISTS (SELECT ‘X' FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO 
       AND LOC = ‘MELB')

    2、用Where子句替换HAVING子句: 
   避免使用HAVING子句, HAVING只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作.如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销. 
   例如: 
   低效

    SELECT REGIONAVG(LOG_SIZE)FROM LOCATION
    GROUP HAVING REGION REGION != ‘SYDNEY'
    AND REGION != ‘PERTH'

    高效 

    SELECT REGIONAVG(LOG_SIZE) FROM LOCATION
    WHERE REGION REGION != ‘SYDNEYBY REGION

    3、使用表的别名(Alias)

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

    4、用EXISTS替换DISTINCT

   当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT.一般可以考虑用EXIST替换 
   例如:

   低效:

    SELECT FROM DEPT D,EMP E
    WHERE D.DEPT_NO = E.DEPT_NO

    高效:

    SELECT DEPT_NO,DEPT_NAME FROM DEPT D WHERE 10 UNION 

    低效:

   SELECT LOC_ID , LOC_DESC , REGION
   FROM LOCATION WHERE LOC_ID = 10
   OR LOC_ID = 30

     高效

    SELECT
    FROM LOCATION WHERE LOC_IN IN (AND JOB = ‘MANAGER'
    AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);

    (高效,执行时间10.6)

   SELECTFROM EMP E WHERE 25 *) FROM EMP
   WHERE MGR=E.EMPNO) AND JOB = ‘MANAGER'; 

     8、计算记录条数 和一般的观点相反, count(*) count(1)稍快 , 当然如果可以通过索引检索,对索引列的计数仍旧是最快的. 例如 COUNT(EMPNO)

 原文地址

目录
相关文章
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
96 8
|
6月前
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
219 6
|
7月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
7月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
|
7月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
9月前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
12月前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
238 1
|
12月前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
1448 6
|
12月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
11月前
|
SQL 缓存 监控
SQL性能提升指南:五大优化策略与十个实战案例
在数据库性能优化的世界里,SQL优化是提升查询效率的关键。一个高效的SQL查询可以显著减少数据库的负载,提高应用响应速度,甚至影响整个系统的稳定性和扩展性。本文将介绍SQL优化的五大步骤,并结合十个实战案例,为你提供一份详尽的性能提升指南。
904 0

热门文章

最新文章

推荐镜像

更多