WEB开发网
开发学院数据库Oracle Oracle数据库表连接方式及常见用法 阅读

Oracle数据库表连接方式及常见用法

 2009-07-25 11:49:57 来源:WEB开发网   
核心提示: 当连接的两个表是用等值连接并且表的数据量比较大时,优化器才可能采用哈希连接,Oracle数据库表连接方式及常见用法(4),哈希连接是基于CBO的,只有在数据库初始化参数HASH_JOIN_ENABLED设为True,并且为参数PGA_AGGREGATE_TARGET设置了一个足够大的值的时

当连接的两个表是用等值连接并且表的数据量比较大时,优化器才可能采用哈希连接。哈希连接是基于CBO的。只有在数据库初始化参数HASH_JOIN_ENABLED设为True,并且为参数PGA_AGGREGATE_TARGET设置了一个足够大的值的时候,Oracle才会使用哈希边连接。HASH_AREA_SIZE是向下兼容的参数,但在Oracle9i之前的版本中应当使用HASH_AREA_SIZE。当使用ORDERED提示时,FROM子句中的第一张表将用于建立哈希表。

   select a.user_name,b.dev_no   
from user_info a, dev_info b  
 
where a.user_id = b.user_id;  
 
Plan  
 
----------------------------------------------------------  
 
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=5 Card=82 Bytes=3936  
 
)  
 
1 0 HASH JOIN (Cost=5 Card=82 Bytes=3936)  
 
2 1 TABLE ACCESS (FULL) OF 'USER_INFO' (Cost=2 Card=82 Bytes  
 
=1968)  
 
3 1 TABLE ACCESS (FULL) OF 'DEV_INFO' (Cost=2 Card=82 Bytes=  
 
1968)  

可以通过在SQL语句中添加HINTS,强制ORACLE优化器产生哈希连接的执行计划。

select /*+ use_hash(a b)*/ a.user_name,b.dev_no   
 
from user_info a, dev_info b  
 
where a.user_id = b.user_id; 

当缺少有用的索引时,哈希连接比嵌套循环连接更加有效。哈希连接也可能比嵌套循环连接更快,因为处理内存中的哈希表比检索B_树索引更加迅速。

上一页  1 2 3 4 

Tags:Oracle 数据库 连接

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接