Механизм приложения Google и подкачка страниц

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

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

select * from MyObject limit 10 offset 2000

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

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

8
задан Klaus Byskov Pedersen 16 April 2010 в 07:34
поделиться

2 ответа

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

6
ответ дан 5 December 2019 в 20:14
поделиться

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

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

2
ответ дан 5 December 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: