nested table 还是 nested loop?

解决方案 »

  1.   

    一般nested loop适合于返回行数<10000的,较小行数返回的表的连接。
    nested loop的过程:选择row resource 最小的那个表作为驱动表(外部表),内部表要求有选择性高的index。 从外部表(驱动表)里一次取一行对内部表的每行进行比较,即外部表有几个distinct行,就有几次nested loop。
    所以nested loop的代价是:
    cost  = outer access cost + (inner access cost * outer cardinality)
    outer access cost应该是读取驱动表到内存,而内部表要求有有效的index也是为了降低inner access cost,而驱动表要求小,也就很好理解了。