网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  轻松掌握oracle数据库where条件执行顺序     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:122次  录入:管理员--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无法连接本地数据库问题
  相关文档
怎样使用sql server数据库的查询累计值 11-15
Oracle数据库编写PL/SQL代码经验谈 04-11
在oracle中选取有父子或树状关系的数据记录 07-28
用存储过程实现删除数据表的部分记录 03-14
详细讲解获得当前"scn"的几种有效方式 03-17
在Oracle 8x中实现自动断开后再连接 01-15
oracle数据库10gr2中stream多源复制方法 08-05
迅速安装Linux与Oracle数据库步骤精讲 07-07
为什么oracle中只能用sys和system登录 07-30
oracle数据库9i和10g环境下使用*.ora 04-29
使用oracle功能特性提高应用执行效率 (1) 04-15
让oracle数据表不显示中文而变成问号的方法 07-24
在Oracle 10g中如何获得索引建议 05-13
讲解如何用组来保证Oracle数据库的安全 06-03
关于Oracle数据库各种存储形式的概述 04-11
12步教会Oracle DBA如何管理DB2 04-23
实例讲解表碎片的具体起因及解决的办法 (1) 02-25
如何在SQL Server中构建并利用UDF表格 07-07
判断字段中是否含有中文字符的实例脚本 01-31
调整Oracle应用系统性能的原则和方法 04-12
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息