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/4f081195-6d27-4337-92eb-602b41827fe2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to