Try using fetch instead of treating the GqlQuery object as an iterable. If you had included a LIMIT or OFFSET clause, it would automatically be retrieved by fetch. So it would be something like:
users = db.GqlQuery(toquery).fetch(limit=1000) See http://code.google.com/appengine/docs/datastore/queryclass.html You can also cache the query like rietveld. See http://code.google.com/p/rietveld/source/browse/trunk/codereview/models.py and look at the gql method. On Sep 30, 7:17 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > my app is producing significantly high mcycles used results. i have > debugged it and determined that the problem is in my for loop. So I > tried two versions and both are too slow. > > Version 1: > > somestuff = ['cat', 'dog', 'cow']; > > toquery = "SELECT * FROM Animals Where id IN (" + somestuff + ")" > users = db.GqlQuery(toquery) > > now i get a list of users that match that key and I do a for loop like > this: > > for user in users: > self.response.out.write(user.id) > > Gives me a lot of mcycles with a red hazard warning. If I remove the > for loop the hazard goes away. The datastore query takes less then a > second. > > VERSION 2 > > somestuff = ['cat', 'dog', 'cow']; > > for animal in somestuff: > toquery = "SELECT * FROM Moodster Where id = '" + animal + '\'' > for user in users: > self.response.out.write(user.id) > > in the latter version I am doing many queries (in this case 3) but > because there is only one user in users for each query (i make sure of > this), it takes less mcycles and gets a faster response > > AM I DOING SOMETHING WRONG? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---