【问题标题】:Index Hint is not working索引提示不起作用
【发布时间】:2012-11-28 06:01:39
【问题描述】:

我正在尝试了解索引提示,但即使在查询中提供提示后,它也没有被使用。这是我遵循的步骤,我错过了什么吗?

SQL> desc emp_1;
Name     Type         Nullable Default Comments 
-------- ------------ -------- ------- -------- 
EMP_ID   NUMBER                                 
EMP_NAME VARCHAR2(20) Y                         
DEPTNO   NUMBER(10)   Y               


SQL> desc dept
Name      Type         Nullable Default Comments 
--------- ------------ -------- ------- -------- 
DEPT_ID   NUMBER       Y                         
DEPT_NAME VARCHAR2(20) Y                         


SQL> CREATE INDEX abc_idex ON emp_1 (deptno);

Index created

select  /*+ index(emp_1.abc_idex) */ emp_name from emp_1
INNER JOIN dept ON  emp_1.deptno = dept.dept_id

解释计划:-

SELECT STATEMENT, GOAL = ALL_ROWS           6   1   28
 HASH JOIN          6   1   28
  TABLE ACCESS FULL EXAMINBI    EMP_1   2   1   25
  TABLE ACCESS FULL EXAMINBI    DEPT    3   4   12

根据雷内的回答

select  /*+ index(emp_1 abc_idex) */ emp_name from emp_1
INNER JOIN dept ON  emp_1.deptno = dept.dept_id

解释计划

SELECT STATEMENT, GOAL = ALL_ROWS           271 100000  800000
 MERGE JOIN         271 100000  800000
  TABLE ACCESS BY INDEX ROWID   EXAMINBI    EMP_1   267 100000  500000
   INDEX FULL SCAN  EXAMINBI    ABC_IDEX    131 100000  
  SORT JOIN         4   4   12
   TABLE ACCESS FULL    EXAMINBI    DEPT    3   4   12

【问题讨论】:

  • @Rene - 我在 emp_1 表中添加了大约 100000 条记录,无论如何这都无关紧要,因为我在这里给出了明确的提示。@Mat 我只是想了解索引,所以它是一种自我学习此时..我已经从sql提示符复制了所有命令。

标签: sql oracle indexing


【解决方案1】:

根据Tahitis documentation,您不能在表规范和索引规范之间放置.。

【讨论】:

  • 谢谢它工作得很好。我在回答中添加了新的解释计划。谢谢
猜你喜欢
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
相关资源
最近更新 更多