Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]

Support Questions

Find answers, ask questions, and share your expertise
Announcements
Share your experience with Cloudera on G2 and get a $25 Amazon Gift card.
Hi, I'm CLEO! Something exciting is coming to the Community. Stay Tuned!

Question about the performance of the local index in Apache Phoenix

avatar
New Contributor

Hello, 

I have a question about the performance of the local index in Apache Phoenix 

 

For example, I have a table TBL_X having 6 columns (A , B ,C ,D E, F).

1. Primary Key is (A, B) 

2. One of the query patterns is   "Select * from  TBL_X where A = 'val1' and C = 'val3' " 

 

For the better performance of the above query, I try to build the local index. 

Does   [ Local index on (C, A)  ]  perform better than   [ Local index on (C) ]  ?? 

or 

Will there be no performance difference since A is already in the first part of the PK ?? 

 

 

1 ACCEPTED SOLUTION

avatar
Super Collaborator

Hello @bgkim 

 

Thanks for using Cloudera Community. To your Q, the Composite Primary Key would require using both A & B in WHERE Clause as the Indexing is done collectively. As such, Your SELECT Query would ideally benefit upon creating a Local Index on A & C. You may review [1] as Read-Heavy Use-Case benefit via Global Index with Penalty incurred during Writes. Additionally, Phoenix offers Covered Index & Explain Plan helps confirming the Index Usage. Link [2] offers few examples as well. 

 

With all recommendations, Best Advise is always to review the Performance internally prior to implementing them in Production. 

 

Regards, Smarak

 

[1] https://phoenix.apache.org/secondary_indexing.html 

[2] https://learn.microsoft.com/en-us/azure/hdinsight/hbase/apache-hbase-phoenix-performance 

View solution in original post

1 REPLY 1

avatar
Super Collaborator

Hello @bgkim 

 

Thanks for using Cloudera Community. To your Q, the Composite Primary Key would require using both A & B in WHERE Clause as the Indexing is done collectively. As such, Your SELECT Query would ideally benefit upon creating a Local Index on A & C. You may review [1] as Read-Heavy Use-Case benefit via Global Index with Penalty incurred during Writes. Additionally, Phoenix offers Covered Index & Explain Plan helps confirming the Index Usage. Link [2] offers few examples as well. 

 

With all recommendations, Best Advise is always to review the Performance internally prior to implementing them in Production. 

 

Regards, Smarak

 

[1] https://phoenix.apache.org/secondary_indexing.html 

[2] https://learn.microsoft.com/en-us/azure/hdinsight/hbase/apache-hbase-phoenix-performance