48- كورس شرح قواعد البيانات MYSQL – MySQL Create Index

# إنشاء الفهرس في MySQL: شرح مفصل

يعتبر الفهرس (Index) في قواعد البيانات أداة قوية لتحسين أداء استعلامات البحث. في MySQL، يمكن أن يكون الفهرس مفتاحًا لتحسين سرعة استرجاع البيانات، خاصة عند التعامل مع جداول كبيرة. سنتناول في هذا المقال كيفية إنشاء الفهرس في MySQL مع تقديم أمثلة متعددة لزيادة الفهم.

ما هو الفهرس؟

الفهرس هو بنية بيانات تُستخدم لتسريع عمليات البحث في الجدول. [شركة برمجة مصرية] يمكنك تخيل الفهرس كفهرس كتاب، حيث يمكنك الوصول إلى المعلومات بسرعة دون الحاجة إلى قراءة الكتاب بأكمله. في MySQL، يتم حفظ الفهارس في هياكل بيانات مثل B-trees أو Hashes، حسب نوع الفهرس.

أنواع الفهارس في MySQL

1. **فهرس أساسي (PRIMARY KEY):** يعتبر الفهرس الأساسي فريدًا لكل صف ولا يمكن أن يحتوي على قيم مكررة أو NULL.
2. **فهرس فريد (UNIQUE INDEX):** يضمن عدم تكرار القيم في العمود أو الأعمدة التي يُطبق عليها.
3. **فهرس عادي (INDEX):** يُستخدم لتحسين سرعة الاستعلامات دون فرض قيود على القيم.
4. **فهرس نص كامل (FULLTEXT INDEX):** يُستخدم لتحسين عمليات البحث النصي في الأعمدة النصية الكبيرة.
5. **فهرس مكاني (SPATIAL INDEX):** يُستخدم مع أنواع البيانات المكانية لتحسين العمليات الجغرافية.

كيفية إنشاء الفهرس

لإنشاء فهرس في MySQL، يمكنك استخدام جملة `CREATE INDEX`. دعونا نستعرض كيفية القيام بذلك مع أمثلة متعددة:

مثال 1: إنشاء فهرس عادي

لنفترض أن لدينا جدولًا [شركة برمجة مصرية] للموظفين ونريد تحسين سرعة البحث عن الموظفين حسب الاسم.

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    position VARCHAR(50),
    salary DECIMAL(10, 2)
);

CREATE INDEX idx_name ON employees(name);

في هذا المثال، قمنا بإنشاء فهرس باسم `idx_name` على عمود `name`.

مثال 2: إنشاء فهرس فريد

إذا أردنا التأكد من عدم تكرار أرقام الهواتف في جدول الموظفين، يمكننا استخدام فهرس فريد.

ALTER TABLE employees ADD COLUMN phone VARCHAR(15);

CREATE UNIQUE INDEX idx_phone ON employees(phone);

مثال 3: إنشاء فهرس مركب

يمكنك إنشاء فهرس على أكثر من عمود لتحسين أداء الاستعلامات التي تستهدف تلك الأعمدة.

CREATE INDEX idx_name_position ON employees(name, position);

مثال 4: إنشاء فهرس نص كامل

إذا كان لديك عمود يحتوي على نصوص كبيرة وترغب في تحسين البحث النصي، يمكنك استخدام فهرس نص كامل.

CREATE TABLE articles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255),
    content TEXT
);

CREATE FULLTEXT INDEX idx_fulltext_content ON articles(content);

نصائح استخدام الفهارس

– **استخدم الفهارس بحكمة:** على الرغم من أن الفهارس تسهم في تحسين سرعة الاستعلامات، إلا أنها قد تؤثر سلبًا على أداء عمليات الإدراج والتحديث.
– **تحليل الاستعلامات:** استخدم أدوات مثل `EXPLAIN` لتحليل استعلاماتك وفهم كيفية استفادتها من الفهارس.
– **إزالة الفهارس غير المستخدمة:** حافظ على نظافة قاعدة البيانات بإزالة الفهارس التي لا تُستخدم.

الخلاصة

تُعتبر الفهارس في MySQL أداة أساسية لتحسين أداء قواعد البيانات. من خلال فهم أنواع الفهارس وكيفية استخدامها، يمكنك تحسين سرعة وكفاءة استعلاماتك بشكل كبير. تذكر دائمًا أن توازن بين الفائدة التي يقدمها الفهرس والتكلفة التي قد يتسبب فيها على عمليات الكتابة في قاعدة البيانات.