شرح صفوف ومحتوى الفقرة
ماذا لو كان منطق التطبيق يفرض عليك البحث بدالة لا يمكن تحويلها إلى نطاق بسيط، مثل البحث عن العملاء الذين يصادف عيد ميلادهم شهر مايو MONTH(birth_date) = 5 بغض النظر عن سنة الميلاد، أو البحث بحروف صغيرة LOWER(username)؟
بدءاً من الإصدار MySQL 8.0.13، يمكنك إنشاء فهرس دالي على التعبيرات (Functional Index) بوضع التعبير أو الدالة بين قوسين إضافيين ((expression)) داخل أمر CREATE INDEX؛ فيقوم محرك InnoDB بحساب قيمة الدالة مسبقاً وفهرسة النتيجة داخل شجرة B+Tree!
SQL
CREATE INDEX idx_customers_birth_month ON customers ((MONTH(birth_date)));