Desde el blog de appengine:¿Cómo implementa appengine query en una lista de manera eficiente?
Planificación de consultas avanzada: estamos eliminando la necesidad de explotar los índices y reducir los requisitos de índice personalizado para muchas consultas. El SDK sugerirá mejores índices en varios casos y un próximo artículo describirá qué otras optimizaciones son posibles.
Como prueba, que tienen una entidad en appengine que tiene un ListProperty
class Entity(db.Model):
tags = db.StringListProperty()
que tienen 500.000 entidades, la mitad de ellos tienen etiquetas = [ '1'], y la otra mitad tienen etiquetas = [ '2']
mi consulta es
SELECT FROM Entity WHERE tags='1' and tags='2'
Se devolvió resultados muy rápidamente. ¿Qué plan está usando para lograr esto? ¿Cómo se indexa la lista para lograr esto? En los viejos tiempos, un índice explosivo habría sido necesario.
IIRC esto se cubrió en una de las charlas técnicas: nunca requirió un índice explosivo, solo StringListProperty – bdonlan
Ninguno de los cambios avanzados en la planificación de consultas afectará esta consulta. ¿Cómo insertaste las entidades? Si todos los que tienen etiquetas = 2 tienen identificaciones más altas que las que tienen etiquetas = 1 (o viceversa), esta consulta es trivial de satisfacer. –
Creo que la consulta significaba: SELECCIONE DE Entidad DONDE etiquetas = '1' y etiquetas = '2' ORDEN POR fecha – Jaap