[
https://issues.apache.org/jira/browse/CALCITE-4465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17263978#comment-17263978
]
Liya Fan commented on CALCITE-4465:
-----------------------------------
[~julianhyde] Thanks a lot for your feedback and good suggestions.
I agree with you we should convert to Sarg first and provide special logic for
discrete types. I think we also need to support {{IN}} function, as some types
(e.g. strings) cannot be converted to Sargs.
I also agree with you that we should focus on single-column case, as the number
of different combinations for multiple-columns can be extremely large.
> Estimate the number of distinct values by filter condition
> ----------------------------------------------------------
>
> Key: CALCITE-4465
> URL: https://issues.apache.org/jira/browse/CALCITE-4465
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Liya Fan
> Assignee: Liya Fan
> Priority: Major
>
> According to our current implementation ({{RelMdDistinctRowCount}}),
> estimating the number of distinctive values (NDV) does not make good use of
> the filter condition. It simply forwards the call to its input operator with
> the fiter condition attached.
> In fact, more information can be obtained for some special but commonly used
> conditions. For example, given condition {{x = 'a'}}, we can deduce that
> {{NDV( x ) <= 1}}. Given condition {{x in ('a', 'b')}}, we can deduce that
> {{NDV( x ) <= 2}}.
> More generally, if we have {{x in ('a', 'b') AND y in ('c', 'd', 'e')}}, we
> have {{NDV(x, y) <= 2 * 3 = 6}}.
> Thoughts?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)