Oracle的表连接查询及其内部运行机制(二)

2014-11-24 16:41:26 · 作者: · 浏览: 3
于NL连接的场景:
(1)两表关联返回的记录不多,最佳情况是驱动表的结果集返回1条或少量的及条记录,而被驱动表仅匹配到1条或少量的几条记录,这种情况即便T1表和T2表的记录很大,但是也非常迅速。
(2)遇到不等值查询等导致哈希和排序合并连接被限制使用,不得不使用NL连接。
(3)驱动表的限制条件所在列有索引,被驱动表的连接条件所在列有索引。
hash连接和merge sort连接:连接条件的索引对它们起不到传递作用,索引的连接条件起不到快速检索的作用,但是限制条件如果有合适的索引可以快速检索到少量记录,还是可以提升性能的。
哈希连接:两表关联等值查询,在没有任何索引的情况下,Oracle倾向于走哈希算法,增大PGA中的HASH_AREA_SIZE是优化哈希连接的有效方法。对于内存自动管理的,只要增大PGA就行。
排序合并连接:索引的连接条件虽然没有检索作用,却有消除排序的作用。缺陷:即使在连接条件的两个列都建过索引,却只能消除一张表的排序。增大内存排序区,避免在排序尺寸过大时在磁盘中排序。