`
zuuuzhang
  • 浏览: 29267 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

oracle sql优化学习笔记

 
阅读更多
  1. select 语句中避免使用'*',这种方法非常低效,在oracle解析过程中会将*转换成所有的列名,这个工作通常要查询数据库对象数据字典来完成,耗费了更多的时间。
  2. 减少数据库的访问次数,实际当执行sql时候,oracle内部执行了很多工作,解析、估算索引利用率、绑定变量、读数据块等。例如sql也可以这样写: SELECT A.EMP_NAME , A.SALARY , A.GRADE, B.EMP_NAME , B.SALARY , B.GRADE    FROM EMP A,EMP B    WHERE A.EMP_NO = 342    AND   B.EMP_NO = 291。
  3. 使用decode函数来减少数据处理的时间。使用decode函数可以避免重复扫描相同的记录或重复连接相同的表。例如:
     
       SELECT COUNT(*)SUM(SAL)
     
       FROM EMP
     
       WHERE DEPT_NO = 0020
     
       AND ENAME LIKE ‘SMITH%’;
     
       SELECT COUNT(*)SUM(SAL)
     
       FROM EMP
     
       WHERE DEPT_NO = 0030
     
       AND ENAME LIKE ‘SMITH%’;
     
    你可以用DECODE函数高效地得到相同结果

       SELECT COUNT(DECODE(DEPT_NO,0020,’X’,NULL)) D0020_COUNT,
 
        COUNT(DECODE(DEPT_NO,0030,’X’,NULL)) D0030_COUNT,
 
        SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,
 
        SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL
 
       FROM EMP WHERE ENAME LIKE ‘SMITH%’;
 
     类似的,DECODE函数也可以运用于GROUP BY 和ORDER BY子句中.

 

     4.  访问Table的方式有两种,全表扫描(顺序的访问表中每条记录,一次读入多个数据块)和通过ROWID访问表(包含了表中数据存放的物理位置)。oracle采用了索引(index)实现了数据和存放位置的联系。所以通过索引就能快速的查询就可以得到性能上的提高。

     5.  删除重复记录

         最高效的删除方法使用rowid

         例如:DELETE FROM EMP E 
                  WHERE E.ROWID > (SELECT MIN(X.ROWID)
 
                   FROM EMP X
 
                   WHERE X.EMP_NO = E.EMP_NO);

      6.  统计计算记录数

           count(*)>count(1),当然如果可以通过索引列检索,对索引列的检索依然是最快的,如:count(empno).

      7.  where条件语句的写法

           在下面的例子中,‘!=’将不使用索引。索引只能告诉你什么存在表中,而不能告诉你什么不存在表中。

           不使用索引: SELECT ACCOUNT_NAME FROM TRANSACTION WHERE AMOUNT !=0;

           使用索引: SELECT ACCOUNT_NAME FROM TRANSACTION WHERE AMOUNT >0;

           ‘||’是字符连接函数. 就象其他函数那样, 停用了索引.

           ‘+’是数学函数. 就象其他数学函数那样, 停用了索引.

            如果一定要对使用函数的列启用索引, ORACLE新的功能: 基于函数的索引(Function-Based Index) 也许是一    个较好的方案.  CREATE INDEX EMP_I ON EMP (UPPER(ename)); /*建立基于函数的索引*/

SELECT * FROM emp WHERE UPPER(ename) = ‘BLACKSNAIL’; /*将使用索引*/

     8.  用exist替换distinct。

          避免在sql语句中使用distinct,一般可考虑用exist进行替换操作。

          例如:
 
低效:
 
    SELECT DISTINCT DEPT_NO,DEPT_NAME
 
    FROM DEPT D,EMP E
 
    WHERE D.DEPT_NO = E.DEPT_NO
 
高效:
 
    SELECT DEPT_NO,DEPT_NAME
 
    FROM DEPT D
 
    WHERE EXISTS ( SELECT ‘X’
 
                    FROM EMP E
 
                    WHERE E.DEPT_NO = D.DEPT_NO);
 

分享到:
评论

相关推荐

    精通 ORACLE SQL高级编程 学习笔记

    精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记

    Oracle SQLServer数据库 学习笔记

    这篇学习笔记将深入探讨这两个系统的概念、特性和应用。 一、Oracle数据库系统 Oracle数据库是由甲骨文公司开发的一款强大、高性能的数据库解决方案。其主要特点包括: 1. **分布式数据库**:Oracle支持多节点的...

    成功之路:Oracle11g学习笔记.pdf

    在介绍Oracle系统管理的知识以后,将介绍与开发相关的内容(如PL/SQL基础知识、存储过程、函数、包等),并介绍数据库性能调整,《成功之路:Oracle 11g学习笔记》重点介绍SQL语句调优。SQL语句调优是《成功之路:Oracle...

    ORACLE学习笔记之调节性能优化篇

    本文主要围绕ORACLE数据库的性能优化,特别是如何通过不同的方式来追踪和分析SQL语句的执行,从而找出性能瓶颈。 首先,了解如何查询当前正在执行语句的执行计划是至关重要的。通过`V$SQL_PLAN`视图,我们可以获取...

    Oracle 10g sql 学习笔记

    Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...

    java+SSH+oracle+sqlserver学习笔记

    【Java SSH Oracle SQLServer 学习笔记】 Java是一种广泛使用的面向对象的编程语言,它以其跨平台、开源和丰富的库而闻名。SSH是三个开源框架的缩写,分别是Spring、Struts和Hibernate,它们在Java Web开发中起着至...

    oracle_sql笔记

    Oracle SQL是数据库管理员和开发人员在Oracle数据库系统中进行数据查询和管理的重要工具。这篇笔记主要涵盖了Oracle SQL的...这两份“Oracle SQL笔记”文档应包含了上述各个方面的详细解释和实例,值得仔细阅读和学习。

    oracle 数据库 SQL学习笔记

    Oracle数据库是全球广泛使用的...总的来说,Oracle数据库SQL学习笔记应该涵盖这些核心领域,并深入探讨每个主题,包括实例、最佳实践和问题解决策略。通过持续学习和实践,你可以成为一名熟练的Oracle数据库专业人员。

    Mastering_Oracle_SQL学习笔记

    在深入探讨《Mastering Oracle SQL学习笔记》的内容之前,我们先理解一下这门课程的核心目标:帮助初学者更好地掌握SQL语言中的关键概念和操作,尤其是针对Oracle数据库的特性。这包括了SQL语句的构建、数据筛选、...

    成功之路Oracle11g学习笔记

    其次,SQL是与Oracle交互的主要工具,学习笔记会详细介绍SQL的语法和用法。SQL语言分为DDL(Data Definition Language)、DML(Data Manipulation Language)、DCL(Data Control Language)和TCL(Transaction ...

    Oracle_SQL学习笔记

    ### Oracle SQL 学习笔记关键知识点详解 #### 一、SQL 并行查询 并行查询是 Oracle 提供的一种提高查询性能的技术,特别是在处理大型数据集时尤其有效。通过利用多处理器或多核 CPU 的能力,并行查询能够显著加快...

    Oracle学习笔记 PDF

    ### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...

    Oracle_SQL学习笔记.doc

    这些是Oracle SQL学习中的一些基础和进阶知识点,它们对于高效地管理Oracle数据库至关重要。理解并熟练掌握这些概念,可以帮助你编写更高效、更稳定的SQL语句,优化数据库性能,并确保数据的一致性和完整性。

    Oracle 10g 学习笔记

    │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01...

    oracle sql语句学习

    这个"oracle sql语句学习"资源包显然旨在帮助初学者逐步提升到高级水平,通过全面的笔记资料,使用户能够从基础概念到复杂操作都能熟练掌握。 首先,我们从基础开始。SQL,全称Structured Query Language(结构化...

    ORACLE_SQL学习笔记

    在学习Oracle SQL时,我们需要掌握各种关键概念和语法,以便高效地进行数据查询、更新和管理。以下是一些核心知识点: 1. **并行查询**:并行查询是提高大数据处理效率的一种策略。通过`ALTER SESSION ENABLE ...

Global site tag (gtag.js) - Google Analytics