Вопрос

Как можно было бы написать запрос, который выбирает товары 2000-2010 из коллекции 10000 объектов в хранилище данных.

Я знаю, что это можно сделать подобное в GQL:

select * from MyObject limit 10 offset 2000

Согласно документация, при использовании offset Двигатель все еще будет получать все строки, только не возвращает их, что делает запрос выполнять таким образом, который соответствует линейному значению со значением offset.

Есть ли лучший способ? Например, использование псевдо ROWNUM Колонна, как можно сделать в других типах хранилище данных.

Это было полезно?

Решение

Нет никакого способа эффективной страницы, используя смещения, за исключением кэширования результатов. Вы можете, однако, использовать Cursors Cursors Чтобы реализовать пейджинг, используя тип «закладки».

Другие советы

Помимо использования курсоров, вы также можете использовать подход по заказу сортировки. Например:

SELECT * FROM MyObject ORDER BY field LIMIT 10;

для первых 10 объектов, а затем для следующих 10 объектов и т. Д.

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

Поле может даже быть ключом, если у вас нет другого подходящего поля. Вот более полный пример:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top