2010-08-07 6 views
0

Quelqu'un a-t-il une idée de l'impact de l'utilisation de plusieurs OR sur les performances du moteur de l'application (utilisation du temps CPU peut-être?). Quelque chose comme:Performances avec plusieurs opérateurs OR

select from users where username = 'bob' or 
    username = 'jane' or 
    username = 'greg' or 
    username = 'Nth user'; 

Je pense que nous ne pouvons en recouvrir que 30 en même temps. Je suis curieux de savoir si cette opération se ferait en parallèle (tous les orcs sortent en même temps) ou chacun est fait en série.

Merci

Répondre

2

Vous pouvez faire:

SELECT FROM users WHERE username IN ('bob', 'jane', 'greg', 'Nth user') 

pour la propreté. Voici ce que Google dit de son impact sur les performances:

Remarque: Les opérateurs IN et! = Utilisent plusieurs requêtes dans les coulisses. Par exemple, l'opérateur IN exécute une requête de magasin de données sous-jacente distincte pour chaque élément de la liste. Les entités renvoyées résultent du produit croisé de toutes les requêtes de banque de données sous-jacentes et sont dédupliquées. Un maximum de 30 requêtes de magasin de données est autorisé pour toute requête GQL unique .

http://code.google.com/appengine/docs/python/datastore/gqlreference.html

+0

Oops - le manuel est incorrect. Les entités renvoyées sont le résultat du _union_ des requêtes de base de données sous-jacentes, et non du produit croisé. La même chose est vraie pour les RUP. –

Questions connexes