في لغة SQL، تُستخدم خاصية
CREATE INDEX
لإنشاء فهرس على جدول. الفهرس هو هيكل بيانات إضافي يُسرّع عملية استرجاع البيانات من الجدول، ولكنه يُضيف أيضًا بعض التعقيد عند إدخال أو تعديل البيانات. يُشبه الفهرس فهرس الكتاب، حيث يُمكنك من الوصول إلى معلومات مُحددة بسرعة دون الحاجة إلى قراءة الكتاب بأكمله.لماذا نستخدم الفهارس؟
- تسريع الاستعلامات: يُسرّع الفهرس بشكل كبير عمليات البحث عن البيانات باستخدام عبارات
WHERE
. - تحسين الأداء: يُحسن الفهرس أداء العمليات التي تتضمن فرز البيانات (
ORDER BY
) وتجميعها (GROUP BY
).
عيوب استخدام الفهارس:
- زيادة حجم قاعدة البيانات: يُخزن الفهرس كبيانات إضافية، مما يزيد من حجم قاعدة البيانات.
- بطء عمليات الإدخال والتعديل والحذف: عند إدخال أو تعديل أو حذف بيانات في جدول مُفهرس، يجب أيضًا تحديث الفهرس، مما يُبطئ هذه العمليات.
أنواع الفهارس:
هناك أنواع مختلفة من الفهارس في SQL، ولكن الأكثر شيوعًا هما:
- الفهرس العادي (Non-Unique Index): يُمكن أن يحتوي على قيم مُتكررة.
- الفهرس الفريد (Unique Index): يضمن عدم وجود قيم مُتكررة في العمود المُفهرس. يُشبه قيد
UNIQUE
، ولكنه يُنفذ باستخدام فهرس.
صيغة CREATE INDEX
:
SQL
CREATE INDEX index_nameON table_name (column1, column2, ...);
index_name
: اسم الفهرس. يجب أن يكون فريدًا داخل قاعدة البيانات.table_name
: اسم الجدول الذي سيتم إنشاء الفهرس عليه.(column1, column2, ...)
: قائمة الأعمدة التي سيتم تضمينها في الفهرس. يُمكن إنشاء فهرس على عمود واحد أو على عدة أعمدة (فهرس مُركب).
صيغة CREATE UNIQUE INDEX
:
SQL
CREATE UNIQUE INDEX index_nameON table_name (column1, column2, ...);
أمثلة:
- إنشاء فهرس على عمود
last_name
في جدولcustomers
:
SQL
CREATE INDEX idx_customers_lastnameON customers (last_name);
- إنشاء فهرس مُركب على عمودي
last_name
وfirst_name
في جدولcustomers
:
SQL
CREATE INDEX idx_customers_nameON customers (last_name, first_name);
- إنشاء فهرس فريد على عمود
email
في جدولcustomers
:
SQL
CREATE UNIQUE INDEX idx_customers_emailON customers (email);
ملاحظات هامة:
- يجب اختيار الأعمدة التي يتم استخدامها بشكل مُتكرر في عبارات
WHERE
لإنشاء الفهارس عليها. - لا تُفرط في استخدام الفهارس، حيث أن كثرتها تُؤثر سلبًا على أداء عمليات الإدخال والتعديل والحذف.
- يُمكن حذف الفهرس باستخدام الأمر
DROP INDEX index_name ON table_name;
. - يُمكن عرض الفهارس الموجودة على جدول باستخدام أوامر خاصة بنظام إدارة قواعد البيانات المُستخدم (مثل
SHOW INDEX FROM table_name;
في MySQL).
متى نستخدم الفهارس؟
- عندما تكون سرعة استرجاع البيانات أكثر أهمية من سرعة إدخالها وتعديلها وحذفها.
- عند استخدام أعمدة مُحددة بشكل مُتكرر في عبارات
WHERE
. - عند وجود جداول كبيرة تحتوي على كمية كبيرة من البيانات.
باختصار، تُعتبر خاصية CREATE INDEX
أداة قوية لتحسين أداء استعلامات SQL، ولكن يجب استخدامها بحذر وتوازن مع الأخذ في الاعتبار تأثيرها على عمليات إدارة البيانات الأخرى.