Part of what your describing looks documented here:
https://developers.google.com/appengine/docs/python/datastore/gqlreference

"""
The IN operator compares value of a property to each item in a list.
The IN operator
is equivalent to many = queries, one for each value, that are ORed
together. An entity whose value for the given property equals any of the
values in the list can be returned for the query.

*Note:* The IN and != operators use multiple queries behind the scenes. For
example, the IN operator executes a separate underlying datastore query for
every item in the list. The entities returned are a result of the
cross-product of all the underlying datastore queries and are
de-duplicated. A maximum of 30 datastore queries are allowed for any single
GQL query.

"""
If you experience a different behavior than the documented one I encourage
you to fill a detailed defect on the public issue tracker (with
Component-Datastore):
https://code.google.com/p/googleappengine/issues/entry?template=Other%20defect

Or a documentation defect (with Component-Documentation) if you think the
documentation could be improved.

Feel free to link the issue(s) on that thread, and I will make sure (after
acknowledging them) that they are escalated to the right team.

Thanks in advance for your contributions.
On Sat, Jan 5, 2013 at 3:04 AM, Ryan Chazen <[email protected]> wrote:

> <https://lh3.googleusercontent.com/pcMTiy_-SDxzfHNk178ORXaVoPB0GzQ6eoAGZ4nFsBLUqZi0XNCzFWLKx0xcttb6mA=s1600>
> Ouch ouch, it's even worse than expected. I ran an query with an IN filter
> with the same value repeated. eg IN[0,0,0,0,0,0,0,0,0,0,0] - The query runs
> completely in serial doing an independent query for each of the 0s. You are
> charged for the same entity returned multiple times, and the entity is
> returned to you multiple times even though it's obviously the same entity.
>
> The IN filter should definitely be marked as deprecated in the SDK docs,
> and there should be a large warning against using it - it is ALWAYS better
> to use the async datastore to create multiple queries with an EQUALs filter
> - it will cost exactly the same, return the same data, and be far faster as
> it runs in parallel. The whole IN filter seems like a "user trap" on
> Google's part - at the minimum, the IN query should be changed to run in
> parallel!
>
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-appengine/-/kJ4oHDPjEPoJ.
>
> To post to this group, send email to [email protected].
> 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.
>



-- 
Johan Euphrosine (proppy)
Developer Programs Engineer
Google Developer Relations

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
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.

Reply via email to