易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle的优化器有两种优化方式(二)

15. /*+USE_CONCAT*/
对查询中的WHERE后面的OR条件进行转换为UNION  ALL的组合查询. (懵懂啊,先存着)
例如:
select /*+use_concat */ * from emp where deptno=10 OR empno=7788;
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=2 Bytes=174)
   1    0   TABLE ACCESS (FULL) OF 'EMP' (Cost=2 Card=2 Bytes=174)
16. /*+NO_EXPAND*/
对于WHERE后面的OR 或者IN-LIST的查询语句,
NO_EXPAND将阻止其基于优化器对其进行扩展.
SELECT /*+NO_EXPAND*/  *  from  EMP  WHERE DEPTNO=10 AND job='MANAGER';
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=87)
   1    0   TABLE ACCESS (FULL) OF 'EMP' (Cost=2 Card=1 Bytes=87)
17. /*+NOWRITE*/
禁止对查询块的查询重写操作.
18. /*+REWRITE*/
可以将视图作为参数.
19. /*+MERGE(TABLE)*/
能够对视图的各个查询进行相应的合并.
20. /*+NO_MERGE(TABLE)*/
对于有可合并的视图不再合并.
21. /*+ORDERED*/
根据表出现在from中的顺序,ORDERED使ORACLE依此顺序对其连接.
SELECT  /*+ORDERED*/  D.DNAME, E.ENAME,E.SAL from EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO;
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=5 Card=82 Bytes=4510)
   1    0   HASH JOIN (Cost=5 Card=82 Bytes=4510)
   2    1     TABLE ACCESS (FULL) OF 'EMP' (Cost=2 Card=82 Bytes=2706)
   3    1     TABLE ACCESS (FULL) OF 'DEPT' (Cost=2 Card=82 Bytes=1804)
兑换下EMP和DEPT的顺序,得到
SELECT  /*+ORDERED*/  D.DNAME, E.ENAME,E.SAL from DEPT D, EMP E WHERE E.DEPTNO=D.DEPTNO;
Execution Plan
--------------------


相关文档:

ORACLE中Like与Instr性能大比拼

t表中将近有1100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标。但经过实际测试发
现,like的效率与instr函数差别相当大。下面是一些测试结果:
SQL> set timing on
SQL> select count(*) from t where instr(title,’手册’)>0;
COUNT(*)
&mdash ......

oracle dg 的基本命令

1,查看当前的保护模式
 select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;
2,查看日志的传送方式;
 select dest_name,archiver from v$archive_dest;
3,停止standby的自动恢复状态
 alter database recover manager standby database finish;
4,添加standby logfile
&nb ......

使用Java调用Oracle数据库的存储过程实例

一:无返回值的存储过程
1、建立存储过程
CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS
BEGIN
INSERT INTO T_TEST (I_ID,I_NAME) VALUES (PARA1, PARA2);
END TESTA;
2、相应的JAVA程序
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sq ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号