The IndexClause for the get_indexed_slices takes a start key. You can page the results from your secondary index query by making multiple calls with a sane count and including a start key.
Cheers ----------------- Aaron Morton Freelance Cassandra Developer New Zealand @aaronmorton http://www.thelastpickle.com On 13/12/2012, at 6:34 PM, Chengying Fang <cyf...@ngnsoft.com> wrote: > You are right, Dean. It's due to the heavy result returned by query, not > index itself. According to my test, if the result rows less than 5000, it's > very quick. But how to limit the result? It seems row limit is a good choice. > But if do so, some rows I wanted maybe miss because the row order not > fulfill query conditions. > For example: CF User{I1,C1} with Index I1. Query conditions:I1=foo, order by > C1. If I1=foo return 10000 limit 100, I can't get the right result of C1. > Also we can not always set row range fulfill the query conditions when doing > query. Maybe I should redesign the CF model to fix it. > > ------------------ Original ------------------ > From: "Hiller, Dean"<dean.hil...@nrel.gov>; > Date: Wed, Dec 12, 2012 10:51 PM > To: "user@cassandra.apache.org"<user@cassandra.apache.org>; > Subject: Re: Why Secondary indexes is so slowly by my test? > > You could always try PlayOrm's query capability on top of cassandra ;)??.it > works for us. > > Dean > > From: Chengying Fang <cyf...@ngnsoft.com<mailto:cyf...@ngnsoft.com>> > Reply-To: "user@cassandra.apache.org<mailto:user@cassandra.apache.org>" > <user@cassandra.apache.org<mailto:user@cassandra.apache.org>> > Date: Tuesday, December 11, 2012 8:22 PM > To: user <user@cassandra.apache.org<mailto:user@cassandra.apache.org>> > Subject: Re: Why Secondary indexes is so slowly by my test? > > Thanks to Low. We use CompositeColumn to substitue it in single not-equality > and definite equalitys query. And we will give up cassandra because of the > weak query ability and unstability. Many times, we found our data in > confusion without definite cause in our cluster. For example, only two rows > in one CF, row1-columnname1-columnvalue1,row2-columnname2-columnvalue2, but > some times, it becomes > row1-columnname1-columnvalue2,row2-columnname2-columnvalue1. Notice the wrong > column value. > > > ------------------ Original ------------------ > From: "Richard Low"<r...@acunu.com<mailto:r...@acunu.com>>; > Date: Tue, Dec 11, 2012 07:44 PM > To: "user"<user@cassandra.apache.org<mailto:user@cassandra.apache.org>>; > Subject: Re: Why Secondary indexes is so slowly by my test? > > Hi, > > Secondary index lookups are more complicated than normal queries so will be > slower. Items have to first be queried in the index, then retrieved from > their actual location. Also, inserting into indexed CFs will be slower (but > will get substantially faster in 1.2 due to CASSANDRA-2897). > > If you need to retrieve large amounts of data with your query, you would be > better off changing your data model to not use secondary indexes. > > Richard. > > > On 7 December 2012 03:08, Chengying Fang > <cyf...@ngnsoft.com<mailto:cyf...@ngnsoft.com>> wrote: > Hi guys, > > I found Secondary indexes too slowly in my product(amazon large instance) > with cassandra, then I did test again as describe here. But the result is the > same as product. What's wrong with cassandra or me? > Now my test: > newly installed ubuntu-12.04 LTS , apache-cassandra-1.1.6, default configure, > just one keyspace(test) and one CF(TestIndex): > > 1. CREATECOLUMN FAMILY TestIndex > 2. WITH comparator = UTF8Type > 3. AND key_validation_class=UTF8Type > 4. AND default_validation_class = UTF8Type > 5. AND column_metadata = [ > 6. {column_name: tk, validation_class: UTF8Type, index_type: KEYS} > 7. {column_name: from, validation_class: UTF8Type} > 8. {column_name: to, validation_class: UTF8Type} > 9. {column_name: tm, validation_class: UTF8Type} > 10. ]; > > and 'tk' just three value:'A'(1000row),'B'(1000row),'X'(increment by test) > The test query from cql: > 1,without index:selectcount(*) from TestIndex limit 1000000; > 2,with index:selectcount(*) from TestIndex where tk='X' limit 1000000; > When I insert 60000 row 'X', the time:1s and 12s. > When 'X' up to 130000,the time:2.3s and 33s. > When 'X' up to 250000,the time:3.8s and 53s. > > According to this, when 'X' up to billon, what's the result? Can Secondary > indexes be used in product? I hope it's my mistake in doing this test.Can > anyone give some tips about it? > Thanks in advance. > fancy > > > > -- > Richard Low > Acunu | http://www.acunu.com | @acunu >