[ 
https://issues.apache.org/jira/browse/PHOENIX-5740?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xinyi Yan updated PHOENIX-5740:
-------------------------------
    Description: 
!Screen Shot 2020-02-19 at 4.41.12 PM.png!
{code:java}
0: jdbc:phoenix:localhost:49454> CREATE TABLE FOO (ID1 BIGINT NOT NULL , ID2 
BIGINT NOT NULL, CONSTRAINT PK PRIMARY KEY(ID1, ID2));
No rows affected (1.262 seconds)
0: jdbc:phoenix:localhost:49454> EXPLAIN SELECT * FROM FOO WHERE ((ID1=1 AND 
ID2=1) OR (ID1=2 AND ID2=2));
+-------------------------------------------------------------------------------------------+-----------------+----------------+------+
|                                           PLAN                                
            | EST_BYTES_READ  | EST_ROWS_READ  | EST_ |
+-------------------------------------------------------------------------------------------+-----------------+----------------+------+
| CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER FOO                  
            | null            | null           | null |
|     SERVER FILTER BY FIRST KEY ONLY AND ((ID1 = 1 AND ID2 = 1) OR (ID1 = 2 
AND ID2 = 2))  | null            | null           | null |
+-------------------------------------------------------------------------------------------+-----------------+----------------+------+
2 rows selected (0.008 seconds)
{code}
 

AS we can see, the pattern of WHERE (( all pk conditions) OR ( all pk 
conditions)) generates the wrong scan.

Instead of a full scan, it should be a point lookup since we have full primary 
key listed. 

 

 

  was:
!Screen Shot 2020-02-19 at 4.41.12 PM.png!

AS we can see, the pattern of WHERE (( all pk conditions) OR ( all pk 
conditions)) generates the wrong scan.

Instead of a full scan, it should be a point lookup since we have full primary 
key listed. 

 

 


> WhereOptmizer doesn't generate optimized query plan
> ---------------------------------------------------
>
>                 Key: PHOENIX-5740
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5740
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: Xinyi Yan
>            Priority: Major
>         Attachments: Screen Shot 2020-02-19 at 4.41.12 PM.png
>
>
> !Screen Shot 2020-02-19 at 4.41.12 PM.png!
> {code:java}
> 0: jdbc:phoenix:localhost:49454> CREATE TABLE FOO (ID1 BIGINT NOT NULL , ID2 
> BIGINT NOT NULL, CONSTRAINT PK PRIMARY KEY(ID1, ID2));
> No rows affected (1.262 seconds)
> 0: jdbc:phoenix:localhost:49454> EXPLAIN SELECT * FROM FOO WHERE ((ID1=1 AND 
> ID2=1) OR (ID1=2 AND ID2=2));
> +-------------------------------------------------------------------------------------------+-----------------+----------------+------+
> |                                           PLAN                              
>               | EST_BYTES_READ  | EST_ROWS_READ  | EST_ |
> +-------------------------------------------------------------------------------------------+-----------------+----------------+------+
> | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER FOO                
>               | null            | null           | null |
> |     SERVER FILTER BY FIRST KEY ONLY AND ((ID1 = 1 AND ID2 = 1) OR (ID1 = 2 
> AND ID2 = 2))  | null            | null           | null |
> +-------------------------------------------------------------------------------------------+-----------------+----------------+------+
> 2 rows selected (0.008 seconds)
> {code}
>  
> AS we can see, the pattern of WHERE (( all pk conditions) OR ( all pk 
> conditions)) generates the wrong scan.
> Instead of a full scan, it should be a point lookup since we have full 
> primary key listed. 
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to