[
https://issues.apache.org/jira/browse/PHOENIX-3941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16739604#comment-16739604
]
Lars Hofhansl commented on PHOENIX-3941:
----------------------------------------
Yes. But the code does not work the way :(
You *have* to declare your index as ... ON (A, B), where A is some prefix of
the primary key. If you don't that the pruning is not done.
See BaseResultIterators getCommonColumns (or similar... not at a computer right
now).
As is, if the PK is A,B, and you declare a local index on C, regions will never
be pruned based on A, B.
> Filter regions to scan for local indexes based on data table leading pk
> filter conditions
> -----------------------------------------------------------------------------------------
>
> Key: PHOENIX-3941
> URL: https://issues.apache.org/jira/browse/PHOENIX-3941
> Project: Phoenix
> Issue Type: Improvement
> Reporter: James Taylor
> Assignee: James Taylor
> Priority: Major
> Labels: SFDC, localIndex
> Fix For: 4.14.0, 5.0.0
>
> Attachments: PHOENIX-3941_v1.patch, PHOENIX-3941_v2.patch,
> PHOENIX-3941_v3.patch, PHOENIX-3941_v4.patch
>
>
> Had a good offline conversation with [~ndimiduk] at PhoenixCon about local
> indexes. Depending on the query, we can often times prune the regions we need
> to scan over based on the where conditions against the data table pk. For
> example, with a multi-tenant table, we only need to scan the regions that are
> prefixed by the tenant ID.
> We can easily get this information from the compilation of the query against
> the data table (which we always do), through the
> statementContext.getScanRanges() structure. We'd just want to keep a pointer
> to the data table QueryPlan from the local index QueryPlan.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)