对于被连接的数据子集较小的情况,nested loop连接是个较好的选择。一般在nested loop中, 驱动表满足条件结果集不大,被驱动表的连接字段要有索引,这样就走nstedloop。如果驱动表返回记录太多,就不适合nested loops了。可用ordered提示来改变CBO默认的驱动表,可用USE_NL提示来强制使用nested loop。当小表可以全部放入内存中,其成本接近全表扫描两个表的成本之和。临时段中的分区都需要换进内存做hash join。以下条件下hash join可能有优势:要点如下:可用ordered提示来改变CBO默认的驱动表,可用USE_HASH提示来强制使用hash join。一般是在没有索引的情况下,9i开始已经很少出现,因为其排序成本高,大多为hash join替代。
暂无评论