- select 语句中避免使用'*',这种方法非常低效,在oracle解析过程中会将*转换成所有的列名,这个工作通常要查询数据库对象数据字典来完成,耗费了更多的时间。
- 减少数据库的访问次数,实际当执行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。
- 使用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【第2版】ORACLE SQL高级编程【第二版】学习笔记
这篇学习笔记将深入探讨这两个系统的概念、特性和应用。 一、Oracle数据库系统 Oracle数据库是由甲骨文公司开发的一款强大、高性能的数据库解决方案。其主要特点包括: 1. **分布式数据库**:Oracle支持多节点的...
在介绍Oracle系统管理的知识以后,将介绍与开发相关的内容(如PL/SQL基础知识、存储过程、函数、包等),并介绍数据库性能调整,《成功之路:Oracle 11g学习笔记》重点介绍SQL语句调优。SQL语句调优是《成功之路:Oracle...
本文主要围绕ORACLE数据库的性能优化,特别是如何通过不同的方式来追踪和分析SQL语句的执行,从而找出性能瓶颈。 首先,了解如何查询当前正在执行语句的执行计划是至关重要的。通过`V$SQL_PLAN`视图,我们可以获取...
Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...
【Java SSH Oracle SQLServer 学习笔记】 Java是一种广泛使用的面向对象的编程语言,它以其跨平台、开源和丰富的库而闻名。SSH是三个开源框架的缩写,分别是Spring、Struts和Hibernate,它们在Java Web开发中起着至...
Oracle SQL是数据库管理员和开发人员在Oracle数据库系统中进行数据查询和管理的重要工具。这篇笔记主要涵盖了Oracle SQL的...这两份“Oracle SQL笔记”文档应包含了上述各个方面的详细解释和实例,值得仔细阅读和学习。
Oracle数据库是全球广泛使用的...总的来说,Oracle数据库SQL学习笔记应该涵盖这些核心领域,并深入探讨每个主题,包括实例、最佳实践和问题解决策略。通过持续学习和实践,你可以成为一名熟练的Oracle数据库专业人员。
在深入探讨《Mastering Oracle SQL学习笔记》的内容之前,我们先理解一下这门课程的核心目标:帮助初学者更好地掌握SQL语言中的关键概念和操作,尤其是针对Oracle数据库的特性。这包括了SQL语句的构建、数据筛选、...
其次,SQL是与Oracle交互的主要工具,学习笔记会详细介绍SQL的语法和用法。SQL语言分为DDL(Data Definition Language)、DML(Data Manipulation Language)、DCL(Data Control Language)和TCL(Transaction ...
### Oracle SQL 学习笔记关键知识点详解 #### 一、SQL 并行查询 并行查询是 Oracle 提供的一种提高查询性能的技术,特别是在处理大型数据集时尤其有效。通过利用多处理器或多核 CPU 的能力,并行查询能够显著加快...
### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...
这些是Oracle SQL学习中的一些基础和进阶知识点,它们对于高效地管理Oracle数据库至关重要。理解并熟练掌握这些概念,可以帮助你编写更高效、更稳定的SQL语句,优化数据库性能,并确保数据的一致性和完整性。
│ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01...
这个"oracle sql语句学习"资源包显然旨在帮助初学者逐步提升到高级水平,通过全面的笔记资料,使用户能够从基础概念到复杂操作都能熟练掌握。 首先,我们从基础开始。SQL,全称Structured Query Language(结构化...
在学习Oracle SQL时,我们需要掌握各种关键概念和语法,以便高效地进行数据查询、更新和管理。以下是一些核心知识点: 1. **并行查询**:并行查询是提高大数据处理效率的一种策略。通过`ALTER SESSION ENABLE ...