donc j'ai une classe d'utilisateursApp Engine GQL interroger une gamme de propriété
class User(db.Model):
points = db.IntegerProperty()
donc je créé 1000 entités fictives sur le serveur de développement avec des points allant de 1 à 1000
query = db.GqlQuery("SELECT * FROM User WHERE points >= 300"
"AND points <= 700"
"LIMIT 20"
"ORDER BY points desc")
Je veux seulement 20 résultats par requête (assez pour remplir une page). Je n'ai pas besoin de pagination des résultats.
Tout a l'air ok, ça a marché sur le serveur de développement.
Question:
1. Cela fonctionnera-t-il sur un serveur de production avec 100 000 à 500 000 entités utilisateur? Est-ce que je vais éprouver un grand décalage? J'espère que non, parce que j'ai entendu dire que App Engine indexe automatiquement la colonne des points
2. Toutes les autres techniques d'optimisation que vous pouvez recommander?
Il ne sert à rien de mettre en cache l'objet GQL - l'analyse est moins onéreuse que le décapage/dépilage! Mais l'utilisation de l'interface de requête est (légèrement) plus rapide que GQL. –
Je ne voulais pas dire que l'objet GQL devait être décapé. Plutôt, en tenant une instance de celui-ci, vous pourriez éviter d'avoir à refaire à chaque demande, mais si Nick Johnson dit que vous n'avez pas besoin de déranger, alors certainement pas. –