好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Oracle执行计划(3)-两表连接基数

Oracle 执行计划(3)- 两表连接基数 1 公式: 基数 = 连接选择率 * 过滤条件 1 基数 + 过滤条件 2 的基数 连接选择率 =((num_rows( 表 1)-num_nulls( 表 1 连接字段 ))/num_rows( 表 1))* ((num_rows( 表 2)-num_nulls( 表 2 连接字段 ))/num_rows( 表 2))

Oracle 执行计划(3)- 两表连接基数

1 公式:

基数 = 连接选择率 * 过滤条件 1 基数 + 过滤条件 2 的基数

连接选择率 =((num_rows( 表 1)-num_nulls( 表 1 连接字段 ))/num_rows( 表 1))*

((num_rows( 表 2)-num_nulls( 表 2 连接字段 ))/num_rows( 表 2)) /

Greater(num_distinct( 表 1 连接字段 ),num_distinct( 表 2 连接字段 ))

create table t1 as
select  trunc(dbms_random.value(0,25)) filter1,
trunc(dbms_random.value(0,30)) join1,
lpad(rownum,10) v1,
rpad('x',100) padding1
from all_objects
where rownum 

基数=1/40*10000/30*10000/50=1/40*333*200=1665 与结果集相当.因为该版本没有消除掉连接条件.

查看更多关于Oracle执行计划(3)-两表连接基数的详细内容...

  阅读:37次