كيف يمكنني تحديد الإدخالات ليوم معين من أيام الأسبوع باستخدام SQL؟
-
03-07-2019 - |
سؤال
يمكنني استخدام هذا الاستعلام لتحديد جميع الطلبات بتاريخ يوم الاثنين:
SELECT * from orders WHERE strftime("%w", date)="1";
لكن على حد علمي، لا يمكن تسريع ذلك باستخدام فهرس، كما هو الحال في كل صف strftime
يجب أن تحسب.
يمكنني إضافة حقل إضافي مع تخزين أيام الأسبوع، ولكني أريد تجنب ذلك.هل هناك حل يستخدم الفهرس أم أنني مخطئ وهذا الاستعلام يعمل بشكل جيد بالفعل؟(وهذا يعني أنه ليس من الضروري المرور عبر كل صف لحساب النتيجة.)
المحلول
إذا أردت الجميع في أيام الاثنين على الإطلاق، ستحتاج إلى فحص ميداني أو متسلسل.ما يمكنك فعله هو حساب التواريخ الفعلية، على سبيل المثال، لجميع أيام الاثنين خلال عام واحد.الحالة WHERE date IN ('2009-03-02', '2009-02-23', ...)
سوف تستخدم مؤشر
نصائح أخرى
وأو كبديل لاقتراح vartec، وبناء الجدول الزمني تتألف فقط من تاريخ واسم اليوم لكل يوم في السنة (سواء فهرستها) ثم قم بإجراء الاستعلام الخاص بك عن طريق القيام JOIN ضد هذا الجدول.