سؤال

كيف يمكن للمرء أن يدور حول كتابة استعلام يختار العناصر 2000-2010 من مجموعة من 10000 كائن في متجر البيانات.

أعلم أنه يمكن القيام به مثل هذا في GQL:

select * from MyObject limit 10 offset 2000

بحسب ال توثيق, ، عند استخدام offset سيظل المحرك يجلب جميع الصفوف ، ولا يعيدها فقط ، مما يجعل الاستعلام يؤدي بطريقة تتوافق بشكل خطي مع قيمة offset.

هل هناك أي طريقة أفضل؟ مثل استخدام الزائفة ROWNUM عمود مثلما يمكن للمرء أن يفعله في أنواع أخرى من مخازن البيانات.

هل كانت مفيدة؟

المحلول

لا توجد وسيلة لصفحة الكفاءة باستخدام الإزاحة ، باستثناء تخزين النتائج. ومع ذلك ، يمكنك استخدام مؤشرات DataStore لتنفيذ الترحيل باستخدام نهج نوع "المرجعية".

نصائح أخرى

إلى جانب استخدام المؤشرات ، يمكنك أيضًا استخدام نهج ترتيب الفرز. فمثلا:

SELECT * FROM MyObject ORDER BY field LIMIT 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