`
feng5hao
  • 浏览: 23117 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

ORACLE10g学习笔记(一)

阅读更多

1.识别'低效执行'的SQL语句

SELECT EXECUTIONS , DISK_READS, BUFFER_GETS, 
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, 
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, 
SQL_TEXT 
FROM V$SQLAREA WHERE EXECUTIONS>0 AND BUFFER_GETS > 0 
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8 
ORDER BY 4 DESC;

 
2.先查询后取结果集
举例:模仿SQL Server实现Top x从结果集获取指定数量(x)的数据条数  select top 1 f from A;

select f from (select f from A where f=0) where  rownum  <= 1;

 
3.WHERE子句的顺序约定
表连接子句必须写在其它WHERE子句之前,那些可以过滤掉最大数量记录的条件建议写在WHERE子句的末尾。
原因:ORACLE采用自下而上的顺序解析WHERE子句
4.SELECT子句中避免使用星号(*)
ORACLE在解析的过程中, 会将星号依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.
5.删除重复记录

DELETE FROM A WHERE A.ROWID > (SELECT MIN(B.ROWID) FROM B WHERE B.id = A.id);

 
6.用EXISTS替换DISTINCT
当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用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); 

 
EXISTS 使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,立刻返回结果.
7.WHERE子句中, 如果索引列所对应的值的第一个字符由通配符(WILDCARD)开始, 索引将不被采用.
8.基础表的选择
基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的.
如果用CBO (COST BASED OPTIMIZER),优化器会检查SQL语句中的每个表的物理大小,索引的状态,然后选用花费最低的执行路径.
如果用RBO (RULE BASED OPTIMIZER) , 并且所有的连接条件都有索引对应, 在这种情况下, 基础表就是FROM 子句中列在最后的那个表.
9. 避免在索引列上使用IS NULL和IS NOT NULL
避免在索引中使用任何可以为空的列,ORACLE将无法使用该索引 .
10.WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列.
11.内部发生的类型转换,索引将失效!
为了避免ORACLE对字段进行隐式的类型转换, 最好把类型转换用显式表现出来. 注意当字符和数值比较时, ORACLE会优先转换数值类型到字符类型.
12.‘!=' 将不使用索引. 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中.
13.‘||'是字符连接函数. 就象其他函数那样, 停用了索引.
14.‘+'是数学函数. 就象其他数学函数那样, 停用了索引.
15.下面的例子中,相同的索引列不能互相比较,这将会启用全表扫描.
不使用索引:

SELECT ACCOUNT_NAME, AMOUNT 
FROM TRANSACTION 
WHERE ACCOUNT_NAME = NVL(:ACC_NAME,ACCOUNT_NAME); 

 

使用索引:

SELECT ACCOUNT_NAME, AMOUNT 
FROM TRANSACTION 
WHERE ACCOUNT_NAME LIKE NVL(:ACC_NAME,'%'); 

 

如果一定要对使用函数的列启用索引, ORACLE新的功能: 基于函数的索引(Function-Based Index) 也许是一个较好的方案.

CREATE INDEX EMP_I ON EMP (UPPER(ename)); /*建立基于函数的索引*/ 
SELECT * FROM emp WHERE UPPER(ename) = ‘BLACKSNAIL'; /*将使用索引*/

 

16.? 手工创建快照

SQL>EXEC dbms_workload_repository.create_snapshot
? 产生AWR报告
SQL>@$ORACLE_HOME/rdbms/admin/awrrpt.sql

 
17.在 Alter table 或 Create table 后加 cache 子句来使表成为缓存表(不被请出)

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Oracle10g学习笔记

    Oracle10g学习笔记,Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记

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

    开发技巧展示是《成功之路:Oracle 11g学习笔记》的一大特色(这一点很值得资深的开发人员借鉴)! 《成功之路:Oracle 11g学习笔记》共24章,主要介绍了Oracle安装、干净卸载Oracle、数据库启动关闭、Oracle网络配置等...

    Oracle 10g 学习笔记

    │ Oracle 10G 数据库系统学习笔记.pdf │ Oracle DBA学习心得 --第0章 - ColorfulStar3399的专栏 - CSDN博客.mht │ Oracle DBA学习心得 --第1章 - ColorfulStar3399的专栏 - CSDN博客.mht │ Oracle Direct-Path ...

    成功之路Oracle11g学习笔记

    《成功之路Oracle11g学习笔记》是一本专为初学者设计的Oracle数据库学习资源,旨在帮助读者系统地掌握Oracle11g的基础知识。Oracle11g是Oracle公司推出的一个重要版本,它提供了许多增强的功能和优化,使得数据库...

    成功之路:Oracle11g学习笔记

    资源名称:成功之路:Oracle 11g学习笔记内容简介:本书专为开发人员编写,先引导开发新手熟悉Oracle环境,然后进入数据库开发,并要掌握项目开发中的一些技巧。开发技巧展示是本书的一大特色(这一点很值得资深的...

    Oracle11g学习笔记

    总结来说,"Oracle11g学习笔记"将引导你全面掌握Oracle11g数据库管理系统,从基础操作到高级应用,从数据库设计到性能优化,从安全管理到高可用性实践,为你的IT事业打下坚实基础。通过阅读这个PDF文档,你将能够...

    成功之路Oracle11g学习笔记-赵振平

    成功之路Oracle11g学习笔记-赵振平 请下载2个附件

    成功之路:Oracle_11g学习笔记17

    Oracle 11g作为一款成熟的关系型数据库管理系统,其性能调整能力一直是众多数据库管理员(DBA)和开发人员关注的焦点。本学习笔记以第17章构筑高速运行的SQL语句为例,详细探讨了Oracle数据库性能调整的相关知识点。 ...

    Oracle 11g学习笔记一

    Oracle 11g学习笔记一 此笔记为个人在学习Oracle时从教学视频、参考书上摘录整理而来,纯手打完成

    我的Oracle 11g OCP学习笔记

    本学习笔记详细记录了作者在准备Oracle 11g OCP认证过程中的学习心得和实践经验,对于希望深入理解Oracle数据库管理和优化的读者来说,是一份宝贵的资料。 Oracle 11g包含了许多重要的特性和改进,例如: 1. **...

    韩顺平j2ee-玩转oracle10g学习笔记

    《韩顺平j2ee-玩转oracle10g学习笔记》是一份全面记录了韩顺平老师关于Oracle 10g数据库系统教学内容的文档。Oracle 10g是Oracle公司推出的一个重要版本,它在数据库管理、性能优化、安全性、可扩展性和灾难恢复等...

    ORACLE10G学习笔记

    ORACLE10G学习笔记 包括基础知识 SQl基本语句 安全备份与恢复

    oracle11g学习笔记

    Oracle 11g是一款强大的关系型数据库管理系统,其在企业级应用中占据着重要的地位。在学习Oracle 11g的过程中,了解并掌握其基本概念、安装、用户管理、权限和角色、数据对象以及管理工具的使用至关重要。 首先,...

    oracle10g学习笔记

    ### Oracle 10g 学习笔记:深入理解与配置要点 #### 一、Oracle 10g系统架构与配置参数 Oracle 10g作为一款成熟的关系型数据库管理系统,其内部架构主要由共享内存区域(SGA)和程序全局区(PGA)组成。在学习与...

    Oracle 10g sql 学习笔记

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

    韩顺平2011玩转oracle10g学习笔记

    韩顺平2011玩转oracle10g学习笔记,是学习oracle数据库10G的必备文档.doc

    Oracle 11g学习笔记

    本学习笔记将深入探讨Oracle 11g的关键特性和技术,帮助读者掌握其核心知识。 一、Oracle 11g概述 Oracle 11g是Oracle公司推出的数据库版本,主要特点是提升了性能、可用性和安全性。它提供了众多新功能,如自动...

    成功之路 Oracle 11g 中文学习笔记

    成功之路 Oracle 11g 中文学习笔记 专为开发人员编写,先引导开发新手熟悉Oracle环境,然后进入数据库开发,并要掌握项目开发的一些技巧。开发技巧展示是本书一大特色(这一点很值得资深的开发人员借鉴)! 本书共24...

    最牛逼的Oracle 11g OCP学习笔记

    以下是对这份"最牛逼的Oracle 11g OCP学习笔记"中的关键知识点的详细阐述: 一、Oracle 11g基础知识 Oracle 11g引入了许多新特性,如自动内存管理、数据屏蔽、实时应用集群(RAC)、闪回数据库等。其中,自动内存管理...

Global site tag (gtag.js) - Google Analytics