calling distinct on _id field against a collection is slow
To optimize the code, distinct method should be avoided especially against _id field. Sort should also be done on the server side to take advantage of generator to avoid using up memory for large data set. Change-Id: Ib417f73e2238a5d9865a2a1a9990e891b0f7a24c fixes: bug #1204607 fixes: bug #1204609
This commit is contained in:
		@@ -430,7 +430,10 @@ class Connection(base.Connection):
 | 
			
		||||
        q = {}
 | 
			
		||||
        if source is not None:
 | 
			
		||||
            q['source'] = source
 | 
			
		||||
        return sorted(self.db.user.find(q).distinct('_id'))
 | 
			
		||||
 | 
			
		||||
        return (doc['_id'] for doc in
 | 
			
		||||
                self.db.user.find(q, fields=['_id'],
 | 
			
		||||
                                  sort=[('_id', pymongo.ASCENDING)]))
 | 
			
		||||
 | 
			
		||||
    def get_projects(self, source=None):
 | 
			
		||||
        """Return an iterable of project id strings.
 | 
			
		||||
@@ -440,7 +443,10 @@ class Connection(base.Connection):
 | 
			
		||||
        q = {}
 | 
			
		||||
        if source is not None:
 | 
			
		||||
            q['source'] = source
 | 
			
		||||
        return sorted(self.db.project.find(q).distinct('_id'))
 | 
			
		||||
 | 
			
		||||
        return (doc['_id'] for doc in
 | 
			
		||||
                self.db.project.find(q, fields=['_id'],
 | 
			
		||||
                                     sort=[('_id', pymongo.ASCENDING)]))
 | 
			
		||||
 | 
			
		||||
    def get_resources(self, user=None, project=None, source=None,
 | 
			
		||||
                      start_timestamp=None, start_timestamp_op=None,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user