网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  轻松掌握oracle数据库where条件执行顺序     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:123次  录入:管理员--2008-04-21  
 

【赛迪网-it技术报道】由于sql优化起来比较复杂,并且还会受环境限制,在开发过程中,写sql必须必须要遵循以下几点的原则:

1.oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须写在其他where条件之前, 那些可以过滤掉最大数量记录的条件必须写在where子句的末尾.

例如:

(低效)

select … from emp e where sal > 50000 and job = ‘manager’ and 25 < (select count(*) from emp where mgr=e.empno);

(高效)

select … from emp e where 25 < (select count(*) from emp where mgr=e.empno) and sal > 50000 and job = ‘manager’;

2.select子句中避免使用’*’

当在select子句中列出所有的column时,使用动态sql列引用 ‘*’ 是一个方便的方法.可是,这是一个非常低效的方法. 实际上,oracle在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.

3.使用表的别名(alias)

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

注:column歧义指的是由于sql中不同的表具有相同的column名,当sql语句中出现这个column时,sql解析器无法判断这个column的归属。

 
 
上一篇: 通过rownum隐式游标实现与top相似的功能    下一篇: 全面解析oracle无法连接本地数据库问题
  相关文档
Oracle HA 在Unix上双机环境的安装指南 08-05
怎样才能删除所有表中的"procedure" 02-29
讲解oracle数据库自动增长列的实现过程 05-29
关于Oracle的虚拟专有数据库特性探讨 04-11
ip地址变化后oracle 10g如何才能不受影响 04-15
有关Oracle中虚拟专用数据库的探讨 04-11
讲解sql与oracle外键约束中的级联删除 05-29
全面解析oracle数据库的系统和对象权限 05-07
怎样解决cpu高度消耗(100%)的数据库问题 (1) 11-23
全面剖析Oracle数据库中的分区功能 04-11
oracle数据库decode函数的作用及使用方法 05-12
oracle数据库中undo数据段的作用及类型 04-24
oracle数据库中如何根据时间来执行job 05-13
八个学习点帮助你全面认识Oracle数据库 05-27
oracle ebs 11.5 for linux as4安装心得 08-08
Oracle系统表查询 01-15
在单机上创建物理oracle数据库9i standby 07-17
大型mis软件的开发必须重视数据库设计 05-04
Oracle异常关闭导致的故障及解决办法 04-11
Oracle是波音747还是MySQL丰田汽车呢? 06-03
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息