You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Nick Dimiduk (JIRA)" <ji...@apache.org> on 2016/09/23 16:34:20 UTC

[jira] [Created] (PHOENIX-3325) optimize lhs = ANY(...) as lhs in (...)

Nick Dimiduk created PHOENIX-3325:
-------------------------------------

             Summary: optimize lhs = ANY(...) as lhs in (...)
                 Key: PHOENIX-3325
                 URL: https://issues.apache.org/jira/browse/PHOENIX-3325
             Project: Phoenix
          Issue Type: Improvement
    Affects Versions: 4.7.0
            Reporter: Nick Dimiduk


Phoenix will efficiently optimize a {{WHERE x IN (...)}} clause, when x is part of the primary key, into a skip-scan or point lookup, based on the column's rowkey position. The same could be done for a {{WHERE x = ANY(...)}}. This would be especially convenient for clients using prepared statements where the number of element compared is not known ahead of time. They may prepare the query once using {{ANY}} and bind an array, rather than re-building it each invocation with a concatenation of {{?}}'s based on the member size.

{noformat}
0: jdbc:phoenix:localhost> explain select * from test1 where a = any(ARRAY[1,3]);
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                      PLAN                                                                                                |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST1                                                                                                                                                       |
|     SERVER FILTER BY org.apache.phoenix.expression.function.ArrayAnyComparisonExpression [children=[ARRAY[1,3], A = org.apache.phoenix.expression.function.ArrayElemRefExpression [children=[ARRAY[1,3], |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows selected (0.008 seconds)
0: jdbc:phoenix:localhost> explain select * from test1 where a in (1,3);
+------------------------------------------------------------------+
|                               PLAN                               |
+------------------------------------------------------------------+
| CLIENT 1-CHUNK PARALLEL 1-WAY POINT LOOKUP ON 2 KEYS OVER TEST1  |
+------------------------------------------------------------------+
1 row selected (0.039 seconds)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)