Please read the following and hopefully it will answer your questions: https://phoenix.apache.org/secondary_indexing.html#Index_Usage
On Mon, May 9, 2016 at 11:36 PM, 金砖 <[email protected]> wrote: > hi, I'm using phoenix-4.7, and I found phoenix did not use index > efficiently enough. > Can phoenix optimize more for this situation? > > EX: > > table: > > create table t (pk varchar primary key, name varchar, age > unsigned_int); > > and create 2 index on it: > create index name on t (name); > create index age on t (age); > > > * problem1: select * from table did not use index, instead did full scan > on table.* > > 0: jdbc:phoenix:localhost> explain select * from t where name = 'name'; > +-------------------------------------------------------------+ > | PLAN | > +-------------------------------------------------------------+ > | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER T | > | SERVER FILTER BY NAME = 'name' | > +-------------------------------------------------------------+ > > > *problem2: when selecting more than 1 field, neither index will be used. > * > > 0: jdbc:phoenix:localhost> explain select name from t where name = 'name' > and age > 1; > +-------------------------------------------------------------+ > | PLAN | > +-------------------------------------------------------------+ > | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER T | > | SERVER FILTER BY (NAME = 'name' AND AGE > 1) | > +-------------------------------------------------------------+ > > > 0: jdbc:phoenix:localhost> explain select age from t where name = 'name' > and age > 1; > +-------------------------------------------------------------+ > | PLAN | > +-------------------------------------------------------------+ > | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER T | > | SERVER FILTER BY (NAME = 'name' AND AGE > 1) | > +-------------------------------------------------------------+ > >
