You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@phoenix.apache.org by Batyrshin Alexander <0x...@gmail.com> on 2018/12/23 13:38:37 UTC

Phoenix perform full scan and ignore covered global index

Examples:

1. Ignoring indexes if "*" used for select even index include all columns from source table

0: jdbc:phoenix:127.0.0.1> explain select * from table where "p" = '123123123';
+-------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
|                                                 PLAN                                                  | EST_BYTES_READ  | EST_ROWS_READ  |  EST_INFO_TS   |
+-------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
| CLIENT 1608-CHUNK 237983037 ROWS 160746749821 BYTES PARALLEL 30-WAY FULL SCAN OVER table  | 160746749821    | 237983037      | 1545484493647  |
|     SERVER FILTER BY d."p" = '123123123'                                          | 160746749821    | 237983037      | 1545484493647  |
| CLIENT MERGE SORT                                                                                     | 160746749821    | 237983037      | 1545484493647  |
+-------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
3 rows selected (0.05 seconds)


2. Indexes used if only 1 column selected

0: jdbc:phoenix:127.0.0.1> explain select "c" from table where "p" = '123123123';
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
|                                                                                PLAN                                                                                 | EST_BYTES_READ  | EST_ROWS_READ  |  EST_INFO_TS   |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
| CLIENT 30-CHUNK 3569628 ROWS 3145729398 BYTES PARALLEL 30-WAY RANGE SCAN OVER table_idx_p [0,'123123123'] - [29,'123123123']  | 3145729398      | 3569628        | 1545484508039  |
|     SERVER FILTER BY FIRST KEY ONLY                                                                                                                                 | 3145729398      | 3569628        | 1545484508039  |
| CLIENT MERGE SORT                                                                                                                                                   | 3145729398      | 3569628        | 1545484508039  |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
3 rows selected (0.038 seconds)


3.

0: jdbc:phoenix:127.0.0.1> explain select /*+ INDEX(table table_idx_p) */ * from table where "p" = '123123123';
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
|                                                                                    PLAN                                                                                     | EST_BYTES_READ  | EST_ROWS_READ  |  EST_INFO_TS   |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
| CLIENT 1608-CHUNK 237983037 ROWS 160746749821 BYTES PARALLEL 30-WAY FULL SCAN OVER table                                                                        | 3145729398      | 3569628        | 1545484508039  |
| CLIENT MERGE SORT                                                                                                                                                           | 3145729398      | 3569628        | 1545484508039  |
|     SKIP-SCAN-JOIN TABLE 0                                                                                                                                                  | 3145729398      | 3569628        | 1545484508039  |
|         CLIENT 30-CHUNK 3569628 ROWS 3145729398 BYTES PARALLEL 30-WAY RANGE SCAN OVER table_idx_p [0,'123123123'] - [29,'123123123']  | 3145729398      | 3569628        | 1545484508039  |
|             SERVER FILTER BY FIRST KEY ONLY                                                                                                                                 | 3145729398      | 3569628        | 1545484508039  |
|         CLIENT MERGE SORT                                                                                                                                                   | 3145729398      | 3569628        | 1545484508039  |
|     DYNAMIC SERVER FILTER BY "table.c" IN ($35.$37)                                                                                                             | 3145729398      | 3569628        | 1545484508039  |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
7 rows selected (0.12 seconds)



Re: Phoenix perform full scan and ignore covered global index

Posted by Vincent Poon <vi...@apache.org>.
I'm not able to repro this on latest 4.15.0 :
0: jdbc:phoenix:> explain select * from US_POPULATION where city = 'test';
+-------------------------------------------------------------------------------------------------+-----------------+----------------+--------------+
|                                              PLAN
                       | EST_BYTES_READ  | EST_ROWS_READ  | EST_INFO_TS  |
+-------------------------------------------------------------------------------------------------+-----------------+----------------+--------------+
| CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN RANGE SCAN OVER
US_POPULATION_COVERED_INDEX ['test']  | null            | null           |
null         |
+-------------------------------------------------------------------------------------------------+-----------------+----------------+--------------+


On Sun, Dec 23, 2018 at 7:56 PM Jaanai Zhang <cl...@gmail.com> wrote:

> Could you please show your SQL of the CREATE TABLE/INDEX
>
> ----------------------------------------
>    Jaanai Zhang
>    Best regards!
>
>
>
>
> Batyrshin Alexander <0x...@gmail.com> 于2018年12月23日周日 下午9:38写道:
>
>> Examples:
>>
>> 1. Ignoring indexes if "*" used for select even index include all columns
>> from source table
>>
>> 0: jdbc:phoenix:127.0.0.1> explain select * from table where "p" =
>> '123123123';
>>
>> +-------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
>> |                                                 PLAN
>>                               | EST_BYTES_READ  | EST_ROWS_READ  |
>> EST_INFO_TS   |
>>
>> +-------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
>> | CLIENT 1608-CHUNK 237983037 ROWS 160746749821 BYTES PARALLEL 30-WAY
>> FULL SCAN OVER table  | 160746749821    | 237983037      | 1545484493647  |
>> |     SERVER FILTER BY d."p" = '123123123'
>>           | 160746749821    | 237983037      | 1545484493647  |
>> | CLIENT MERGE SORT
>>                                | 160746749821    | 237983037      |
>> 1545484493647  |
>>
>> +-------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
>> 3 rows selected (0.05 seconds)
>>
>>
>> 2. Indexes used if only 1 column selected
>>
>> 0: jdbc:phoenix:127.0.0.1> explain select "c" from table where "p" =
>> '123123123';
>>
>> +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
>> |
>>         PLAN
>>                  | EST_BYTES_READ  | EST_ROWS_READ  |  EST_INFO_TS   |
>>
>> +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
>> | CLIENT 30-CHUNK 3569628 ROWS 3145729398 BYTES PARALLEL 30-WAY RANGE
>> SCAN OVER table_idx_p [0,'123123123'] - [29,'123123123']  | 3145729398
>> | 3569628        | 1545484508039  |
>> |     SERVER FILTER BY FIRST KEY ONLY
>>
>>                  | 3145729398      | 3569628        | 1545484508039  |
>> | CLIENT MERGE SORT
>>
>>                  | 3145729398      | 3569628        | 1545484508039  |
>>
>> +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
>> 3 rows selected (0.038 seconds)
>>
>>
>> 3.
>>
>> 0: jdbc:phoenix:127.0.0.1> explain select /*+ INDEX(table table_idx_p) */
>> * from table where "p" = '123123123';
>>
>> +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
>> |
>>             PLAN
>>                          | EST_BYTES_READ  | EST_ROWS_READ  |  EST_INFO_TS
>>  |
>>
>> +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
>> | CLIENT 1608-CHUNK 237983037 ROWS 160746749821 BYTES PARALLEL 30-WAY
>> FULL SCAN OVER table
>>                 | 3145729398      | 3569628        | 1545484508039  |
>> | CLIENT MERGE SORT
>>
>>                          | 3145729398      | 3569628        |
>> 1545484508039  |
>> |     SKIP-SCAN-JOIN TABLE 0
>>
>>                         | 3145729398      | 3569628        | 1545484508039
>> |
>> |         CLIENT 30-CHUNK 3569628 ROWS 3145729398 BYTES PARALLEL 30-WAY
>> RANGE SCAN OVER table_idx_p [0,'123123123'] - [29,'123123123']  |
>> 3145729398      | 3569628        | 1545484508039  |
>> |             SERVER FILTER BY FIRST KEY ONLY
>>
>>                          | 3145729398      | 3569628        |
>> 1545484508039  |
>> |         CLIENT MERGE SORT
>>
>>                          | 3145729398      | 3569628        |
>> 1545484508039  |
>> |     DYNAMIC SERVER FILTER BY "table.c" IN ($35.$37)
>>
>>              | 3145729398      | 3569628        | 1545484508039  |
>>
>> +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
>> 7 rows selected (0.12 seconds)
>>
>>
>>

Re: Phoenix perform full scan and ignore covered global index

Posted by Jaanai Zhang <cl...@gmail.com>.
Could you please show your SQL of the CREATE TABLE/INDEX

----------------------------------------
   Jaanai Zhang
   Best regards!




Batyrshin Alexander <0x...@gmail.com> 于2018年12月23日周日 下午9:38写道:

> Examples:
>
> 1. Ignoring indexes if "*" used for select even index include all columns
> from source table
>
> 0: jdbc:phoenix:127.0.0.1> explain select * from table where "p" =
> '123123123';
>
> +-------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> |                                                 PLAN
>                               | EST_BYTES_READ  | EST_ROWS_READ  |
> EST_INFO_TS   |
>
> +-------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> | CLIENT 1608-CHUNK 237983037 ROWS 160746749821 BYTES PARALLEL 30-WAY FULL
> SCAN OVER table  | 160746749821    | 237983037      | 1545484493647  |
> |     SERVER FILTER BY d."p" = '123123123'
>           | 160746749821    | 237983037      | 1545484493647  |
> | CLIENT MERGE SORT
>                              | 160746749821    | 237983037      |
> 1545484493647  |
>
> +-------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> 3 rows selected (0.05 seconds)
>
>
> 2. Indexes used if only 1 column selected
>
> 0: jdbc:phoenix:127.0.0.1> explain select "c" from table where "p" =
> '123123123';
>
> +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> |
>       PLAN
>                | EST_BYTES_READ  | EST_ROWS_READ  |  EST_INFO_TS   |
>
> +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> | CLIENT 30-CHUNK 3569628 ROWS 3145729398 BYTES PARALLEL 30-WAY RANGE SCAN
> OVER table_idx_p [0,'123123123'] - [29,'123123123']  | 3145729398      |
> 3569628        | 1545484508039  |
> |     SERVER FILTER BY FIRST KEY ONLY
>
>                | 3145729398      | 3569628        | 1545484508039  |
> | CLIENT MERGE SORT
>
>                | 3145729398      | 3569628        | 1545484508039  |
>
> +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> 3 rows selected (0.038 seconds)
>
>
> 3.
>
> 0: jdbc:phoenix:127.0.0.1> explain select /*+ INDEX(table table_idx_p) */
> * from table where "p" = '123123123';
>
> +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> |
>           PLAN
>                        | EST_BYTES_READ  | EST_ROWS_READ  |  EST_INFO_TS   |
>
> +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> | CLIENT 1608-CHUNK 237983037 ROWS 160746749821 BYTES PARALLEL 30-WAY FULL
> SCAN OVER table
>             | 3145729398      | 3569628        | 1545484508039  |
> | CLIENT MERGE SORT
>
>                        | 3145729398      | 3569628        | 1545484508039  |
> |     SKIP-SCAN-JOIN TABLE 0
>
>                         | 3145729398      | 3569628        | 1545484508039
> |
> |         CLIENT 30-CHUNK 3569628 ROWS 3145729398 BYTES PARALLEL 30-WAY
> RANGE SCAN OVER table_idx_p [0,'123123123'] - [29,'123123123']  |
> 3145729398      | 3569628        | 1545484508039  |
> |             SERVER FILTER BY FIRST KEY ONLY
>
>                        | 3145729398      | 3569628        | 1545484508039  |
> |         CLIENT MERGE SORT
>
>                        | 3145729398      | 3569628        | 1545484508039  |
> |     DYNAMIC SERVER FILTER BY "table.c" IN ($35.$37)
>
>            | 3145729398      | 3569628        | 1545484508039  |
>
> +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
> 7 rows selected (0.12 seconds)
>
>
>