WEB开发网
开发学院数据库Oracle 教你快速掌握Oracle中"HINT"的30个用法 阅读

教你快速掌握Oracle中"HINT"的30个用法

 2007-09-14 12:40:22 来源:WEB开发网   
核心提示: 13. /*+INDEX_FFS(TABLE INDEX_NAME)*/ 对指定的表执行快速全索引扫描,而不是全表扫描的办法, 例如: SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMSWHERE DPT_NO='TEC3

13. /*+INDEX_FFS(TABLE INDEX_NAME)*/

对指定的表执行快速全索引扫描,而不是全表扫描的办法。

例如:

SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS
WHERE DPT_NO='TEC305';

14. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/

提示明确进行执行规划的选择,将几个单列索引的扫描合起来。

例如:

SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,
IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS
WHERE EMP_NO='SCOTT' AND DPT_NO='TDC306';

15. /*+USE_CONCAT*/

对查询中的WHERE后面的OR条件进行转换为UNION ALL的组合查询。

例如:

SELECT /*+USE_CONCAT*/ * FROM BSEMPMS
WHERE DPT_NO='TDC506' AND SEX='M';

16. /*+NO_EXPAND*/

对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展。

例如:

SELECT /*+NO_EXPAND*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';

17./*+NOWRITE*/

禁止对查询块的查询重写操作。

18./*+REWRITE*/

可以将视图作为参数。

19. /*+MERGE(TABLE)*/

能够对视图的各个查询进行相应的合并。

例如:SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,
B.DPT_NO FROM BSEMPMS A (SELET DPT_NO
,AVG(SAL) AS AVG_SAL FROM BSEMPMS B
GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO
AND A.SAL>V.AVG_SAL;

20. /*+NO_MERGE(TABLE)*/

对于有可合并的视图不再合并。

上一页  1 2 3 4  下一页

Tags:快速 掌握 Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接