محرك تطبيق Google وترحيله
-
27-09-2019 - |
سؤال
كيف يمكن للمرء أن يدور حول كتابة استعلام يختار العناصر 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;
يمكن أن يكون الحقل مفتاحًا إذا لم يكن لديك حقل مناسب آخر. هنا مثال أكثر اكتمالا: