Just to note, I realized I need to call query.setPrefetch(true) in order to 
call queryRow.getDocumentProperties() however this resulted in the exact 
same query times.

-james

On Saturday, September 13, 2014 8:10:45 PM UTC-4, James Norman wrote:
>
> I'm currently experiencing very slow queries against a somewhat large 
> database.  
>
> The database has 21693 documents (via 
> createAllDocumentsQuery().run().getCount()) with 5-10 fields of small 
> strings or numbers.  I'm experiencing queries of 3-5 seconds using a normal 
> query or live view, the number of returned records in the query is 30.  I'm 
> positive the emitter is not being run on each query.
>
> My View simply emits the id of its parent object.
>
>         view.setMap(new Mapper() {
>             @Override
>             public void map(Map<String, Object> document, Emitter emitter) 
> {
>                 Object classType = 
> document.get(AssayRTApplication.CLASS_KEY);
>                 if( Flow.class.getName().equals( classType ) ) {
>                     emitter.emit( document.get( "assay_guid" ), document);
>                 }
>             }
>         }, "2" );
>
> And the query is as follows:
>             Query query2 = view.createQuery();
>             ArrayList keys2 = new ArrayList();
>             keys2.add( assayId );
>             query2.setKeys( keys2 );
>             QueryEnumerator enum1 = query2.run();
>             while( enum1.hasNext() ) {
>                 Map props = enum1.next().getDocument().getProperties();
>                 for( Object key:props.keySet() ) {
>                     props.get(key);
>                 }
>             }
>
> Again this returns only 30 records.  The large lag is when I iterate over 
> the properties.  Without the iteration the query is extremely fast however 
> this is not useful without the values.
>
> This is a showstopper in our application as a database with 21K records is 
> not all that large.  The performance was great when I started but as the 
> data grew it's dismal now.
>
> 2 things to note that I'm not positive about, one the emitter emits the 
> document, but I have to call queryRow.getDocument().getProperties() because 
> calling queryRow.getDocumentProperties() always returns null.  I suspect 
> the slow times may have something to do with this.
>
> Thanks again for any help, I've spent some time porting our application 
> and this one will block us going forward with cb mobile.
>
> -james
>

-- 
You received this message because you are subscribed to the Google Groups 
"Couchbase Mobile" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/mobile-couchbase/58586930-b31d-43f7-b9d1-26124e1d60ad%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to