sql – Oracle优化器会在同一个SELECT中使用多个提示吗?
我试图优化查询性能,而不得不诉诸于使用优化器提示.但是我从来没有学到过优化器是否会一次使用多个提示.
例如 SELECT /*+ INDEX(i dcf_vol_prospect_ids_idx)*/ /*+ LEADING(i vol) */ /*+ ALL_ROWS */ i.id_number,... FROM i_table i JOIN vol_table vol on vol.id_number = i.id_number JOIN to_a_bunch_of_other_tables... WHERE i.solicitor_id = '123' AND vol.solicitable_ind = 1; 解释计划显示相同的成本,但我知道这只是一个估计. 请假设已经计算了所有表和索引统计信息. FYI,索引dcf_vol_prospect_ids_idx位于i.solicitor_id列上. 谢谢, 炖 解决方法尝试在单个注释块中指定所有提示,如本例中的精彩Oracle文档( http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm)所示.
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,j.job_id ORDER BY total_sal; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |