شرح صفوف ومحتوى الفقرة
في التطبيقات الفعلية، نادراً ما يقتصر شرط البحث WHERE على عمود واحد؛ بل غالباً ما نفلتر الطلبات حسب القسم والحالة وتاريخ الإنشاء معاً. بدلاً من إنشاء ثلاثة فهارس منفصلة، يتيح لك MySQL 8.4 بناء فهرس مركب متعدد الأعمدة (Composite Index) يجمع حتى 16 عموداً داخل شجرة B+Tree واحدة.
كيف يرتب المحرك المفاتيح داخل الفهرس المركب INDEX (department_id, status, hire_date)؟
- يرتب العقد الورقية أولاً حسب قيمة العمود الأول
department_id. - عندما تتساوى قيمة
department_idلعدة موظفين، يرتبهم داخلياً حسب العمود الثانيstatus. - وعندما تتساوى الحالة أيضاً، يرتبهم حسب العمود الثالث
hire_date، تماماً كما يرتب دليل الهاتف الأسماء حسب اللقب ثم الاسم الأول ثم اسم الأب.
SQL
CREATE INDEX idx_emp_dept_status_hire ON employees (department_id, status, hire_date);