[ 
https://issues.apache.org/jira/browse/PHOENIX-3667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15870775#comment-15870775
 ] 

Samarth Jain commented on PHOENIX-3667:
---------------------------------------

This sounds like a good optimization to do. There are a few more tweaks we can 
do here:

- for encoded mutable tables, because column qualifiers are unique across all 
column families, we don’t need to compare column families.
- for encoded mutable tables, stop after we have encountered a column qualifier 
that is >= max qualifier we expect.
- We should count the number of unique column qualifiers in our where clause 
expression using the KeyValueColumnExpressionVisitor. This will be used for us 
to determine the size of the array we will be using for storing the 
foundColumns. For non-encoded tables this count can be used to properly size 
the map of foundColumns.


> Optimize BooleanExpressionFilter for tables with encoded columns
> ----------------------------------------------------------------
>
>                 Key: PHOENIX-3667
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3667
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: James Taylor
>            Assignee: Samarth Jain
>
> The client side of Phoenix determines the subclass of BooleanExpressionFilter 
> we use based on how many column families and column qualifiers are being 
> referenced. The idea is to minimize the lookup cost during filter evaluation. 
> For encoded columns, instead of using a Map or Set, we can create a few new 
> subclasses of BooleanExpressionFilter that use an array instead. No need for 
> any lookups or equality checks - just fill in the position based on the 
> column qualifier value instead. Since filters are applied on every row 
> between the start/stop key, this will improve performance quite a bit.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to