[ https://issues.apache.org/jira/browse/HIVE-7666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Laljo John Pullokkaran resolved HIVE-7666. ------------------------------------------ Resolution: Fixed > Join selectivity calculation should use exponential back-off for conjunction > predicates > ---------------------------------------------------------------------------------------- > > Key: HIVE-7666 > URL: https://issues.apache.org/jira/browse/HIVE-7666 > Project: Hive > Issue Type: Bug > Components: CBO > Affects Versions: 0.13.1 > Reporter: Mostafa Mokhtar > Assignee: Laljo John Pullokkaran > Labels: hive > Fix For: 0.14.0 > > > Assuming dependency for predicate (number of column joins & filters) will > almost always hurt us as implied correlations do actually exist. > Currently HiveRelMdSelectivity.computeInnerJoinSelectivity uses to log to > smoothen selectivity of conjunction predicates which results in un-optimal > plans. > The problem with log is that it still assumes dependency, For instance in > TPC-DS Q17 store_sales has 6 join predicates which explains why stor_sales is > in the wrong place in the plan. > Change the algorithm to use exponential back-off : > ndv(pe0) * ndv(pe1) ^(1/2) * ndv(pe2) ^(1/4) * ndv(pe3) ^(1/8) > Opposed to : > ndv(pex)*log(ndv(pe1))*log(ndv(pe2)) > For TPC-DS Q17 store_sales has 6 inner join predicates if we assume > selectivity of 0.7 for each join then join selectivity can end up being > 6.24285E-05 which is too low and eventually results in an un-optimal plan. -- This message was sent by Atlassian JIRA (v6.3.4#6332)