Oracle数据库Where条件执行顺序
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的归属
相关文档:
SQL Server开发者Oracle快速入门 http://kb.cnblogs.com/a/853694 简单概念的介绍 1. 连接数据库
S: use mydatabase
O: connect username/password@DBAlias
conn username/password@DBAlias 2. 在Oracle中使用Dual, Dual是O ......
Oracle中的Hash Join祥解
一、 hash join概念
Hashjoin(HJ)是一种用于equi-join(而anti-join就是使用NOT IN时的join)的技术。
在Oracle中,它是从7.3开始引入的,以代替sort-merge和nested-loop join方式,
提高效率。在CBO(hash join只有在CBO才可能被使用到)模式下,优化器计算代 ......
1.在ORACLE中实现SELECT TOP N
由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询。
简单地说,实现方法如下所示:
SELECT 列名1...列名n from
(SELECT 列 ......
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'syn_rpt_members_relation;'
,next_date => to_date('02-07-2008 01:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'trunc(sysdate)+1+1/24'
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_cha ......
Oracle中的decode用法
Decode(条件,值1,显示值1,值2,显示值2,…… 值n,显示值n)
应用举例:
select t.res_id,
t.res_size || '(kb)' as res_size,
decode(t.res_type,1,'模板区','0','文档区') res_type,
......