عندما يكون عمود التاريخ مفهرسًا، تساعد مقارنة العمود مباشرة بحدود ثابتة على إتاحة البحث ضمن نطاق في الفهرس. للبحث عن أحداث يوم معين داخل عمود DATETIME، يمكن تحديد بداية اليوم حدًا شاملًا وبداية اليوم التالي حدًا غير شامل. بهذه الطريقة نغطي جميع أوقات اليوم دون افتراض دقة زمنية محددة.
أما تطبيق دالة مثل DATE() على كل قيمة، فقد يمنع الاستفادة المباشرة من فهرس عادي على العمود في البحث النطاقي. لا يعني ذلك استحالة استخدام أي فهرس بأي طريقة، بل يعني أن صياغة الشرط تؤثر في مسارات الوصول المتاحة. يظل القرار الفعلي للمحسن مرتبطًا بحجم البيانات وتوزيعها.
مثال
CREATE TABLE events (
id INT PRIMARY KEY,
starts_at DATETIME(6),
INDEX idx_starts_at (starts_at)
);
SELECT id FROM events
WHERE starts_at >= '2026-10-01'
AND starts_at < '2026-10-02';
يشمل المثال حدثًا وقع قبل منتصف الليل بجزء صغير من الثانية، لكنه يستبعد منتصف ليل اليوم التالي. هذا أدق من استخدام نهاية يوم تنتهي عند الثانية التاسعة والخمسين فقط.
باختصار: استخدم بداية شاملة ونهاية غير شاملة على العمود نفسه لتمثيل اليوم كاملًا وإتاحة البحث النطاقي.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.