日期:2014-05-17  浏览次数:20798 次

关于user_merge提示
存储过程代码中有类似如下的用法:
  user_merge(E);
  user_merge(a,b),
  请问user_merge提示怎么用?其中E,a,b分别代表什么,谢谢!

------解决方案--------------------
楼主写错了吧?
应该是use_merge(..)吧!
这个是oracle hint的一种用法,hint是用于优化sql的。
use_merge(table)的意思是:
将指定的表与其他行源通过合并排序连接方式连接起来,
比如,楼主的use_merge(a,b),应该是将a,b两个表通过条件,排序后合拼成一个临时表,
使用这种方式的原因是为了防止在数据量过大时,由于子查询导致速度太慢,性能低下!

------解决方案--------------------
use_merge是告诉oracle优化器使用“排序-合并”连接来连接每个表的行。
示例:
SQL code

SELECT /*+ USE_MERGE(employees departments) */ * 
  FROM employees, departments 
  WHERE employees.department_id = departments.department_id;