AzLearn

الحدود LIMIT و OFFSET

LIMIT and OFFSET

مفهوم ~16 دقيقة

الحدود LIMIT و OFFSET

LIMIT يحدد عدد الصفوف الراجعة. هذا مهم للواجهات والتقارير السريعة. لا تعرض آلاف الصفوف إذا كانت الشاشة تحتاج عشرة فقط. OFFSET يتجاوز عدداً من الصفوف، ويستخدم في pagination البسيط.

لكن pagination بـOFFSET قد يصبح بطيئاً مع الجداول الكبيرة، وقد يتغير إذا دخلت بيانات جديدة بين الصفحات. لاحقاً ستتعلم keyset pagination. الآن المهم أن تفهم أن LIMIT يجب أن يأتي مع ORDER BY حتى تكون الصفحة مستقرة.

مثال عملي

query.sql

الاستعلام يعرض أول درسين حسب الوزن. هذا ترتيب واضح ومحدود.

قاعدة مهمة

لا تستخدم LIMIT 1 بدون ORDER BY إذا كنت تريد “الأحدث” أو “الأعلى”. بدون ترتيب، أنت تطلب أي صف تقريباً.

اختلافات اللهجة

LIMIT/OFFSET ليس واحداً عبر المحركات. اعرف لهجتك:

-- المعيار / SQLite / PostgreSQL / MySQL — الصيغة الأوضح:
SELECT * FROM users LIMIT 10 OFFSET 20;

-- MySQL و SQLite (اختصار): الترتيب OFFSET ثم LIMIT — مربك:
SELECT * FROM users LIMIT 20, 10;  -- ⚠️ أول رقم هو OFFSET وليس LIMIT

-- SQL Server / Oracle / SQL:2008 القياسي:
SELECT * FROM users ORDER BY id OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

-- SQL Server (الصيغة القديمة):
SELECT TOP 10 * FROM users;

في SQL Server، OFFSET ... FETCH NEXT يتطلب ORDER BY صريحاً — لن يعمل بدونه. القاعدة العامة فوق (لا تُرقّم بدون ترتيب) صارت هنا قيداً نحوياً.

تحدي — Challenge