我试图强制 oracle 数据库 11g 快速版在两个 JOIN SELECT 中使用两种特定方法进行 JOIN,但是当我尝试使用 USE_MERGE 和 USE_NL 提示时它不起作用。我的 SELECT 看起来像这样:
SELECT /*+ ORDERED USE_MERGE(sp) USE_NL(p) FULL(s) FULL(sp) FULL(p) */ DISTINCT s.*
FROM s, sp, p
WHERE s.sn = sp.sn AND
p.pn = sp.pn AND
color = 'Rojo';
但我得到的实际解释计划是这个:
我对此感到非常绝望,并且一直在查看出色的 oracle 文档,但仍然无法实现。这个例子看起来很相似,但我不知道为什么不使用我正在尝试的组合。下一个代码是 Oracle 提供的示例:
SELECT /*+ LEADING(e2 e1) USE_NL(e1) INDEX(e1 emp_emp_id_pk)
USE_MERGE(j) FULL(j) */
e1.first_name, e1.last_name, j.job_id, sum(e2.salary) total_sal
FROM employees e1, employees e2, job_history j
WHERE e1.employee_id = e2.manager_id
AND e1.employee_id = j.employee_id
AND e1.hire_date = j.start_date
GROUP BY e1.first_name, e1.last_name, j.job_id
ORDER BY total_sal;
提前感谢您的帮助:D