网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > PL/SQL > ORACLE PERFORMANCE SQL TUNING  

ORACLE PERFORMANCE SQL TUNING

2005-11-12  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏

       建议使用者,亲自测试后再使用,不要盲目使用下面的方法和建议!

       17. 使用表的别名(Alias) 网管u家u.bitsCN.com

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

网管网www.bitscn.com

网管联盟bitsCN@com

       (译者注: Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属)

网管朋友网www_bitscn_net

网管有家bitscn.net

       18. 用EXISTS替代IN 网管bitscn_com

       在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率.

网管u家u.bitscn@com

网管网www_bitscn_com

       低效: 网管朋友网www_bitscn_net

       SELECT * 网管有家www.bitscn.net

       FROM EMP (基础表)

网管朋友网www_bitscn_net

       WHERE EMPNO > 0

网管bitscn_com

       AND DEPTNO IN (SELECT DEPTNO 网管论坛bbs_bitsCN_com

       FROM DEPT

网管网www_bitscn_com

       WHERE LOC = ‘MELB’)

网管网www_bitscn_com

网管网www_bitscn_com

       高效: 中国网管联盟bitsCN.com

       SELECT * 网管联盟bitsCN@com

       FROM EMP (基础表) 网管u家u.bitsCN.com

       WHERE EMPNO > 0

网管网www.bitscn.com

       AND EXISTS (SELECT ‘X’

网管u家u.bitscn@com

       FROM DEPT

网管bitscn_com

       WHERE DEPT.DEPTNO = EMP.DEPTNO

网管网www.bitscn.com

       AND LOC = ‘MELB’) 网管u家bitscn.net

网管bitscn_com

网管朋友网www_bitscn_net

       (译者按: 相对来说,用NOT EXISTS替换NOT IN 将更显著地提高效率,下一节中将指出) 网管联盟bitsCN_com

网管bitscn_com

网管有家bitscn.net

       19. 用NOT EXISTS替代NOT IN

网管u家u.bitsCN.com

       在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.

网管有家bitscn.net

网管bitscn_com

       例如: 网管u家www.bitscn.net

       SELECT …

网管bitscn_com

       FROM EMP 网管bitscn_com

       WHERE DEPT_NO NOT IN (SELECT DEPT_NO

网管网www.bitscn.com

       FROM DEPT

网管u家www.bitscn.net

       WHERE DEPT_CAT=’A’); 网管bitscn_com

网管bitscn_com

       为了提高效率.改写为:

网管联盟bitsCN@com

网管下载dl.bitscn.com

       (方法一: 高效) 网管u家bitscn.net

       SELECT …. 网管u家u.bitsCN.com

       FROM EMP A,DEPT B

网管u家u.bitsCN.com

       WHERE A.DEPT_NO = B.DEPT(+)

网管网www_bitscn_com

       AND B.DEPT_NO IS NULL

网管联盟bitsCN@com

       AND B.DEPT_CAT(+) = ‘A’ 网管u家bitscn.net

中国网管联盟bitsCN.com

网管u家bitscn.net

       (方法二: 最高效) ---可以采用

中国网管联盟bitsCN.com

       SELECT ….

网管u家bitscn.net

       FROM EMP E 网管有家bitscn.net

       WHERE NOT EXISTS (SELECT ‘X’

网管论坛bbs_bitsCN_com

       FROM DEPT D 网管网www.bitscn.com

       WHERE D.DEPT_NO = E.DEPT_NO 网管有家bitscn.net

       AND DEPT_CAT = ‘A’); 网管u家u.bitsCN.com

TAGs   SELECT   NOTIN   SQL   查询   高效   Column   为了    
 上一篇:PL/SQL 快速建立DB_LINK   下一篇:如何使用DBMS_SUPPORT软件包
相关文章列表
ORACLE PERFORMANCE SQL TUNING 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.PL/SQL - 嵌套游标 cursor-PLSQL
2.用一个实例讲解Oracle数据库的PL/SQL语句
3.PL/SQL----触发器-PLSQL
4.mysql存储过程写法—动态参数运用-PLSQL
5.PL/SQL Developer导出分区索引脚本-PLSQL
6.PL/SQL collection— table() 函数-PLSQL
7.SQL Server 2005 中的架构与用户-PLSQL
8.Oracle数据库维护常用SQL语句集合(2)-P
9.Oracle数据库维护常用SQL语句集合(3)-P
10.再议SQL Server临时表和表变量-PLSQL
最新推荐文章:
1.与数据库无关的处理放到数据库以外来实现
2.Oracle 10g第2版新特性之SQL和PL/SQL
3.通过PL/SQL访问Web Services
4.菜鸟学oracle - 用PL/SQL画直方图
5.重新编译PLSQL中无效对象或指定对象
6.Oracle高级技巧
7.深入了解Oracle 10g新的多重集运算符
8.在SQL中删除重复记录(多种方法)
9.Oracle:PL/SQL中怎样使用Array
10.数据库手册:速查Oracle函数列表
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■