1.
...group by (code,name); 性能要比 ...group by code,name ;强多
2.
在Oracle中,考虑惟一性时(NULL,NULL)与(NULL,NULL)并不相同,这是SQL标准要求的。
不过对于聚集来说(NULL,NULL)和(NULL,NULL)则认为是相同的。
两个(NULL,NULL)在比较时并不相同,但是对GROUP BY 子句来说却是一样的.
所以应当考虑到:每个惟一约束应该至少有一个确实惟一的NOT NULL列。
3.性能最高的删除重复记录的SQL
delete from AJ_SAWP r
where r.rowid in
(select c.rowid from AJ_SAWP c,AJ_SAWP t where c.sjgxsj<t.sjgxsj and c.sjgxsj is not null
and c.WPBH=t.WPBH);
4.执行更新SQL更新数据记录 并不会改变该记录的rowid
5.用>=替代>,效率提高。
6.IN和EXISTS 比较
SELECT COUNT(*) FROM CZRK WHERE GMSFHM IN (
SELECT GMSFHM FROM CZRK HAVING COUNT(GMSFHM) > 1 GROUP BY GMSFHM
);--137786行, 154.016 秒
SELECT COUNT(*) FROM CZRK T where EXISTS (
SELECT GMSFHM FROM CZRK R WHERE T.GMSFHM=R.GMSFHM HAVING COUNT(GMSFHM) > 1 GROUP BY GMSFHM
); -- 137786行, 364.203--秒
7.用外联接提高表连接的查询速度
在作表连接(常用于视图)时,常使用以下方法来查询数据:
SELECT PAY_NO, PROJECT_NAME
FROM A
WHERE A.PAY_NO NOT IN (SELECT PAY_
NO FROM B WHERE VALUE >=120000);
----但是若表A有10000条记录,表B有10000条记录,则要用掉30分钟才能查完,
主要因为NOT IN要进行一条一条的比较,共需要10000*10000次比较后,才能得到结果。
该用外联接后,可以缩短到1分左右的时间:
SELECT PAY_NO,PROJECT_NAME
FROM A,B
WHERE A.PAY_NO=B.PAY_NO(+)
AND B.PAY_NO IS NULL
AND B.VALUE < 12000;
8.用EXISTS替代IN、用NOT EXISTS替代NOT IN:
(高效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X’ FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB’)
(低效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB’)
9. 用EXISTS替换DISTINCT:
(低效):
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);
10.避免在索引列上使用计算
WHERE子句中,如果索引列是函数的一部分.优化器将不使用索引而使用全表扫描.
举例:
低效:
SELECT … FROM DEPT WHERE SAL * 12 > 25000;
高效:
SELECT … FROM DEPT WHERE SAL > 25000/12;
11.用>=替代>
12.巧用 case when...then...else 嵌套简化SQL
select p.rq,SUM(case when p.shengfu='胜' then 1 else 0 end) WIN,
SUM(case when p.shengfu='负' then 1 else 0 end) LOST
from tmp p
group by p.rq;----------------简洁
select distinct p1.rq, t.s_times,r.f_times
from tmp p1,(select p2.rq,p2.shengfu,count(*) s_times from tmp p2 where p2.shengfu='胜' group by(rq,shengfu)) t,
(select p3.rq,p3.shengfu,count(*) f_times from tmp p3 where p3.shengfu='负' group by (rq,shengfu)) r
where p1.rq=t.rq and t.rq=r.rq;---------繁琐
13.强制索引失效
A.如果两个或以上索引具有相同的等级,则可以强制命令ORACLE优化器使用其中一个(通过它检索出记录数量少)。
B. SELECT ENAME FROM EMP
WHERE ENPNO = 793
AND DEPTNO + 0 = 10 /*DEPTNO上索引将失效*/
AND EMPTYPE || '' = 'A'; /*EMPTYPE上索引将失效*/
发表评论
-
大数据量转存(抽取、同步)
2012-11-22 01:23 681在大数据量的转存过程中,建议使用分批转存(不要一次转存过来 ... -
Oracle数据库优化要点总结
2012-10-22 10:33 696当oracle出现性能缓慢、 ... -
反向索引之应用
2012-10-19 15:54 754Oracle会自动为表的 ... -
PFILE与SPFILE差异
2012-10-17 11:56 7821.oracle实例启动时,寻找参数文件的顺序为 spf ... -
Oracle 分区简述
2012-10-12 12:01 678oracle8i起开始推出表分区的概念,最初只有范围分区、列表 ... -
Bitmap位图索引"高昂代价"与B-Tree比较
2012-10-10 08:54 673通过以下实验,来验证B ... -
关于Latch与Spin
2012-10-10 08:51 783latch 是一种轻量级用于保护oracle共享内存结构,用 ... -
完整的ORACLE的UTL_FILE的资料
2012-10-08 13:58 732转自:http://blog.csdn.net/alex197 ... -
RAID的类别使用(0,1,0+1,5)
2012-10-08 09:02 725raid0: 熟悉RAID 0的人都知道,它的读写速度是最高 ... -
oracle 裸设备使用和注解
2012-09-28 11:37 934看了一篇不错的的关于 ... -
EM无法登陆问题
2012-05-19 22:20 1278解决ORACLE的EM登录 这几 ... -
oracle的冷/热备份
2012-04-29 11:48 728一、 冷备份 冷 ... -
oracle安装、编译、参数配置
2011-06-09 19:23 687一、安装 按照以下标 ... -
Oracle个人笔记(SQL性能)2B
2011-06-09 19:20 6781.两者区别在哪?select trunc(sysdate,' ... -
start with...connect by prior用法
2011-06-09 19:18 646--当需要根据递归关系查询结果集时 start wit ... -
ORA-01157(表空间数据文件损坏需重建时)
2011-06-09 19:08 1020EM控制台报错如下: 处理步骤: 1. 备份该数据 ... -
工作积累(游标、权限、数组)2
2011-06-09 19:04 679--游标 一、显式游标通 ... -
工作积累(表空间、导出方案、触发器)1
2011-06-09 19:01 672--查看表空间、数据文件相关信息 1、查看表空间包含哪些数据 ... -
Oracle个人笔记(系统查询语句)3
2011-06-09 18:55 551查询锁的表的方法:(1 ... -
Oracle个人笔记(基本规则)1
2011-06-09 18:52 6311.GRANT 权限 ON 表名(对象名) TO 用户;2.o ...
相关推荐
ORACLE SQL性能优化系列 ORACLE SQL性能优化是数据库管理员和开发者非常关心的一个话题。为了提高数据库的性能,ORACLE 提供了多种优化技术。下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一...
Oracle数据库是全球领先的企业级...由于是关于Oracle高性能SQL引擎的深入剖析,这本资料是数据库开发者和管理员难得的参考资料,尤其对于处理复杂业务逻辑和海量数据的场景下,掌握这些优化和调优技巧显得尤为重要。
这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...
oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记...
标题"压测Oracle的SQL语句的性能情况"暗示了我们关注的是在高负载情况下,Oracle数据库处理SQL查询的能力。压力测试(Pressure Testing)是一种评估系统在极端工作条件下表现的方法,通过模拟大量并发用户执行SQL...
Oracle数据库性能调整与SQL性能优化是数据库管理员和开发人员日常工作中不可或缺的部分。Oracle数据库系统以其高效、稳定和可扩展性闻名,但同时也需要通过精心的调整和优化来确保最佳性能。以下是一些关键的知识点...
Oracle高性能SQL调整是一个至关重要的主题,特别是在大数据量和复杂业务场景下的数据库管理中。Oracle数据库以其强大功能和高效性能著称,但同时也需要精细的优化才能发挥最佳效能。本篇文章将深入探讨SQL调优的关键...
在Oracle数据库管理中,SQL(Structured Query Language)的性能优化是一项至关重要的任务,尤其是在处理大量数据和复杂查询的环境中。"Oracle高性能SQL调整"这一主题深入探讨了如何通过各种技术手段提升SQL语句的...
尽管给定的部分内容并未提供关于"Oracle高性能SQL调整"的具体信息,但从标题和描述中,我们可以推断出文档主要关注的是如何在Oracle数据库环境中优化SQL查询的性能。Oracle数据库是业界领先的关系型数据库管理系统之...
《Oracle高性能SQL调整》这本书主要聚焦于如何优化Oracle数据库中的SQL查询,以提升系统的整体性能。在Oracle数据库环境中,SQL的高效执行是确保系统稳定、快速运行的关键因素。以下是一些核心的知识点: 1. **SQL...
oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记...
Oracle数据库的高性能SQL优化是数据库管理员和开发人员关注的关键领域,因为它直接影响到系统的响应时间和整体性能。Oracle性能管理是一个持续的过程,包括主动和被动两个方面。主动性能管理强调在系统设计和开发...
《Oracle高性能SQL调整》这本书是Oracle数据库管理员和开发人员的重要参考资料,它深入探讨了如何优化SQL查询以获得最佳性能。在Oracle数据库系统中,SQL性能是决定应用响应速度和整体系统效率的关键因素。本书旨在...
介绍oracle高性能SQL的,综合介绍Oracle编程的
Oracle_SQL性能优化.
Oracle性能监控SQL——监控当前会话执行的SQL及IO等信息 Oracle性能监控是数据库管理员的重要职责之一,通过监控数据库的性能,可以及时发现问题,避免数据库的宕机和性能下降。本文将介绍一些常用的Oracle性能监控...
【Oracle SQL性能优化】 Oracle SQL性能优化是数据库开发人员必须掌握的关键技能,它涉及到SQL语句的编写、执行过程、优化器的选择以及执行计划的分析等多个方面。在Oracle数据库环境中,优化SQL性能对于提升系统...