في الدرس الماضي والذي كان عنوانه (الفهارس في MySQL) تعرفنا على أنواع الفهارس الثلاث و هي Primary Key , Unique , Index و قد فصلنا أهم الفروق والمزايا لهم والآن سنكمل ما قلناه في الدرس السابق لنبدأ على بركة الله.
قلنا في الدرس الماضي أنه من الممكن أن ننشىء فهرسا على أكثر من عمود, وأيضا من الممكن أن ننشىء فهرسا على جزء من عمود أي أنه في حال كان لدينا عمودا نوعه varchar وقياسه 70 محرف أي varchar 70 فيمكننا أن ننشىء فهرسا على أول 10 محارف فرضا, أو على أول 23 محرف وذلك حسب ما تريد.
حسننا لنأخذ هذا المثال التوضيحي:
بفرض أنه لدينا جدولا كما يلي:
create table my_table
varchar_col varchar (120) not null
text_col text not null
index index_on_char_col char_col 25
index index_on_text_col text_col 200
بالنظر إلى هذا المثال ستلاحظ بأن الفهرس الأول لم يتم إنشاءه على كامل العمود بل على القسم الاستهلالي من العمود varchar_col.
و الفهرس الثاني تم إنشاءه فقط على أول 200 محرف من العمود text_col .
والخلاصة أنه يمكن أن تنشىء فهرسا على القسم الاستهلالي من العمود الذي يكون نوعه char , varchar وأيضا يمكنك إنشاء فهرسا على أول 255 محرف من الأعمدة ذات النوع text , tinytext , longtext , mediumtext
هنا تقريبا كون الصورة قد اكتملت عن الفهارس, والآن سنضيف فهرس من النوع unique على العمود
ملاحظة:
قد تقول أخي القارىء لماذا لا أنشىء فهارس على جميع الأعمدة وتنتهي المشكلة. طبعا هذا الكلام غير مفيد, وذلك لأن الفهارس تستولي على جزء من مصادر النظام, وفي كل مرة يتم تشغيل أحد تعليمات update , insert سيتم تحديث الفهارس التي تم تطبيقها على هذا الجدول, فإذا كان الجدول مستخدما من أجل عمليات الإدراج فقط, فإن وجود الفهارس غير ضروري على ذاك الجدول لأنه سيسبب بطئاً في أداء MySQL وبالإضافة إلى أنها ستستحوذ على جزءا من ذاكرة الوصول العشوائي RAM .
وبذلك نكون قد أخذنا نظرة شبه كاملة عن الفهارس في MySQL