Pregunta

¿Cómo uno va a escribir una consulta que selecciona los artículos 2000 a 2010 de una colección de 10.000 objetos en el almacén de datos.

Sé que se puede hacer así en GQL:

select * from MyObject limit 10 offset 2000

De acuerdo con la documentación , cuando se utiliza un offset la motor todavía buscará todas las filas, sólo que no devolverlos, con lo que la consulta realice de una manera que corresponde linealmente con el valor de offset.

¿Hay alguna manera mejor? Como el uso de una columna de pseudo ROWNUM como se podría hacer en otros tipos de almacenes de datos.

¿Fue útil?

Solución

No hay manera eficiente a la página utilizando las compensaciones, excepto para almacenar en caché los resultados. Puede, sin embargo, utilizar almacén de datos cursores para implementar la paginación utilizando un enfoque de tipo 'marcar'.

Otros consejos

Además de utilizar los cursores también se puede utilizar un enfoque de ordenación. Por ejemplo:

SELECT * FROM MyObject ORDER BY field LIMIT 10;

durante los primeros 10 objetos y luego para los próximos 10 objetos, etc.

SELECT * FROM MyObject WHERE field > largestFieldValueFromPreviousResult ORDER BY field LIMIT 10;

El campo incluso podría ser una clave si no tiene otro campo apropiado. Aquí está un ejemplo más completo:

http://code.google.com/appengine/articles/paging.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top