重庆思庄Oracle、Redhat认证学习论坛

标题: oracle 中 /*+ full(表名)*/ 优化详解 [打印本页]

作者: 刘泽宇    时间: 2024-10-13 12:21
标题: oracle 中 /*+ full(表名)*/ 优化详解
hint 关键字: /+ full(表名)/
一般来说,sql 优化时,尽量走 index,但不绝对
有时候,全表扫描的效率比索引高

实际应用:

当查询 sql 时间范围较长时
当 sql 中使用索引(执行计划),还是查询很慢时
说明:

表名
        (1) 若表有 '别名',则是 '别名'
        (2) 若表没有 '别名',则是 '表名' 全称
       
示例:

SELECT /*+ full(t)*/
       *
  FROM scott.emp t
WHERE t.empno >= 1


可能遇到的问题
别名为 “@SELxx”
SQL> select * from table(dbms_xplan.display_cursor(sql_id => 'bsdw1ur9qw6mv',cursor_child_no => 0,format => 'advanced'));
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID  bsdw1ur9qw6mv, child number 0
-------------------------------------
SELECT *   FROM scott.emp t  WHERE t.empno >= 1
Plan hash value: 169057108
--------------------------------------------------------------------------------
| Id  | Operation                   | Name   | Rows  | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |       |       |     2 (100)|
|   1 |  TABLE ACCESS BY INDEX ROWID| EMP    |    14 |   532 |     2   (0)| 00:0
|*  2 |   INDEX RANGE SCAN          | PK_EMP |    14 |       |     1   (0)| 00:0
--------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$1 / T@SEL$1
   2 - SEL$1 / T@SEL$1
PLAN_TABLE_OUTPUT
————————————————


解释:

1. T : 表别名
2. @SETL$1 数据块别名
说明:我们一般只需要关注 '表别名' 即可。
         '数据块别名' Oracle 系统自行维护






欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2