phoenix-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lars Hofhansl (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PHOENIX-3941) Filter regions to scan for local indexes based on data table leading pk filter conditions
Date Thu, 10 Jan 2019 16:53:00 GMT

    [ 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)

Mime
View raw message