Hi All, My setup has phoenix 4.14 and a table with 2 column families(CF1 & CF2) where CF1 has around 100 columns and CF2 has 3 columns. Below are a few queries which show the difference in execution times with and without limit clause and their query plans. There is almost > 20x performance degradation when using limit clause on these queries. Any thoughts on this behavior?
0: jdbc:phoenix:> select CF1.AA, CF2.A, CF2.B from test_limit where CF2.A = 'lgak'; *+-------+-------+-------+* *| ** AA ** | ** A ** | ** B ** |* *+-------+-------+-------+* *| *znvv * | *lgak * | *wjkm * |* *| *kiry * | *lgak * | *gnpu * |* *| *qbnp * | *lgak * | *yowh * |* *| *xzfc * | *lgak * | *nibn * |* *+-------+-------+-------+* 4 rows selected (0.603 seconds) 0: jdbc:phoenix:> select CF1.AA, CF2.A, CF2.B from test_limit where CF2.A = 'lgak' limit 2; *+-------+-------+-------+* *| ** AA ** | ** A ** | ** B ** |* *+-------+-------+-------+* *| *znvv * | *lgak * | *wjkm * |* *| *kiry * | *lgak * | *gnpu * |* *+-------+-------+-------+* 2 rows selected (12.115 seconds) 0: jdbc:phoenix:> select CF1.AA, CF2.A, CF2.B from test_limit where CF2.A = 'lgak' limit 10; *+-------+-------+-------+* *| ** AA ** | ** A ** | ** B ** |* *+-------+-------+-------+* *| *znvv * | *lgak * | *wjkm * |* *| *kiry * | *lgak * | *gnpu * |* *| *qbnp * | *lgak * | *yowh * |* *| *xzfc * | *lgak * | *nibn * |* *+-------+-------+-------+* 4 rows selected (15.338 seconds) 0: jdbc:phoenix:> explain select CF1.AA, CF2.A, CF2.B from test_limit where CF2.A = 'lgak'; *+-------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+* *| ** PLAN ** | **EST_BYTES_READ ** | **EST_ROWS_READ ** | ** EST_INFO_TS ** |* *+-------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+* *| *CLIENT 2-CHUNK 35112 ROWS 314572800 BYTES PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER TEST_LIMIT * | *314572800 * | *35112 * | * 1575395762384 * |* *| * SERVER FILTER BY CF2.A = 'lgak' * | *314572800 * | *35112 * | * 1575395762384 * |* *+-------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+* 2 rows selected (0.033 seconds) 0: jdbc:phoenix:> explain select CF1.AA, CF2.A, CF2.B from test_limit where CF2.A = 'lgak' limit 10; *+-------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+* *| ** PLAN ** | **EST_BYTES_READ ** | **EST_ROWS_READ ** | ** EST_INFO_TS ** |* *+-------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+* *| *CLIENT 2-CHUNK 35112 ROWS 314572800 BYTES PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER TEST_LIMIT * | *314572800 * | *35112 * | * 1575395762384 * |* *| * SERVER FILTER BY CF2.A = 'lgak' * | *314572800 * | *35112 * | * 1575395762384 * |* *| * SERVER 10 ROW LIMIT * | *314572800 * | *35112 * | * 1575395762384 * |* *| *CLIENT 10 ROW LIMIT * | *314572800 * | *35112 * | * 1575395762384 * |* *+-------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+* 4 rows selected (0.032 seconds)