Amer Abdallah نشر 11 سبتمبر 2021 أرسل تقرير نشر 11 سبتمبر 2021 أرغب في أخذ آخر 10 كائنات من النموذج ، لذلك قمت بكتابة هذا الكود: User.objects.all().order_by('-id')[:10] هل من الجيد أن أقوم بجلب كل الكائنات من قاعدة البيانات أولاً ، ثم أخذ آخر 10 منهم فقط؟ هل هناك طريقة أكثر فعالية؟ 2 اقتباس
1 سامح أشرف نشر 11 سبتمبر 2021 أرسل تقرير نشر 11 سبتمبر 2021 querysets في جانغو Django كسولة lazy. هذا يعني أن الاستعلام سيصل إلى قاعدة البيانات فقط عندما تستخدم النتيجة على وجه التحديد. لذلك حتى تقوم بطباعة نتيجة استعلام ما أو استخدامها بالفعل، يمكنك التصفية بشكل أكبر دون الوصول إلى قاعدة البيانات. ويمكنك التأكد من ذلك من خلال طباعة جملة SQL التي يتم تنفيذها على النحو التالي: import logging log = logging.getLogger('django.db.backends') log.setLevel(logging.DEBUG) log.addHandler(logging.StreamHandler()) User.objects.all().order_by('-id')[:10] """ Output: (0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" ORDER BY "auth_user"."id" DESC LIMIT 10; args=() """ وكما ترى في الكود السابق، يتم تنفيذ استعلام SQL واحد فقط لجلب آخر 10 عناصر فقط. لاحظ جملة LIMIT 10 في النهاية، هذا يعني أنه سوف يتم آخر 10 نتائج فقط من قاعدة البيانات. 1 اقتباس
السؤال
Amer Abdallah
أرغب في أخذ آخر 10 كائنات من النموذج ، لذلك قمت بكتابة هذا الكود:
هل من الجيد أن أقوم بجلب كل الكائنات من قاعدة البيانات أولاً ، ثم أخذ آخر 10 منهم فقط؟ هل هناك طريقة أكثر فعالية؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.