ملفات الفهرسة Indexes
كما شرحنا من قبل أن جداول ال Indexes تنشئ مع كل حقل primary أو Unique تلقائيا لزيادة سرعة البحث بهذا الحقل وكذلك لمنع تكرار هذا الحقل وفي شرح هذا الموضوع نغطي النقاط التالية:
- إنشاء Index تلقائي
- استخدامات جداول ال Indexes
- أشكال وطرق عمل Index
- إنشاء جداول Index
- حذف جداول Indexes
- قواعد إنشاء جداول Indexes
- جداولindex التقائية واليدوية
عند تحديد حقل primary (PRLMARY KEY , KEY , UNIQUE , or INDEX في الجدول يتم تلقائيا إنشاء جدول index في Data Dictionary ويتم عرضها من ال viewالمسمي DBA- Indexes ويأخذ اسم مقابل لاسم primary أو unique الخاصة به وإذا لم يقم المستخدم بتحديد اسم القيد primary أو (constraint) يتم إنشاء جدول index بالشكل cxxxxx –sys حيث ان xxxxxxxxx هي أرقام تسلسل مع كل جدول INDEX وهناك الطريقة التقليدية وهي استعمال الأمر Create index لإنشاء جدول index حسب الحقل المطلوب.
2- استخدامات جدول index
– للتأكد من عدم تكرار قيمة في حقل قغprima أو unique
– زيادة سرعة البحث في الجدول search
3- أنواع وطرق عمل جدول Index
توجد عدة طرق يتم تكوين جداول Index بها منها
- النوع B – tree-index
- النوع A – Bitmep index
وهي طرق داخلية للفهرسة
4- إنشاء Index
يمكن إنشاء جدول Index باستعمال المر Create Index الذي نحدد والجدول وكذلك يمكن تكوين جدول Index على أكثر من حقل معا وهذا يسمي Composite index مثلا أذا كان رقم القيد غير كافي لتمييز قيد اليومية في برنامج الحسابات العامة لأننا نكرر كود القيد كل يوم فكل يوم يوجد للقيد رقم 5 لذلك نميز هذا القيد برقم وتاريخ القيد فيصبح KEY ويتم إنشاء ملف فهرس index عليهما؟.
- ويتم استعمال الأمر Create index كما يلي:
في هذا المثال يتم استعمال الأمر CREATE لإنشاء INDEX ولكن تم إضافة الأمر UNIQUE أي عدم تكرار حقل الفهرس ويؤدي هذا الأمر إلى عدم السماح بتكرار قيم هذا الحقل بالرغم من ترتيبها واسم INDEX هو EMP – Ename ويتم إنشائه على الجدول EMP باستعمال ON على الحقل Last name
اكتب هذا الأمر ونفذه ولاحظ رسالة إنشاء index
- ويمكن استعمال الأمر Create index بشكل أخر كما يلي:
Create index EMP_AST NAME 2 ON EMP (Ename);
هذا هو نفس الأمر السابق مع حذف unique وهذا يؤدي إلى إنشاء جدول INDEX يرتب قيم الجدول EMP
حسب الحقل Ename ولكنه يسمح بتكرار القيمة في الحقل LAST NAME لعدم وجود UNIQUE
- ويمكن تكوين INDEX على حقل مركب Composite كما يليك
Create Unique Index EMP- Ename, sal ON EMP (Ename, sal);
في هذا المثال تم تحديد الحقل الذي يتم عمل Index على أساسه بالأسماء Ename ,sal وبالتالي يتم إنشاءindex
بناء عليهما معا مع وجود unique فلا يمكن تكرارهما مجتمعان وكذلك الترتيب يكون أولا بترتيب Ename ثم sal
5- حذف Index ويمكن إلغاء جدول Index بالأمر Drop كما يلي:
Drop Index EMP_Ename_sal;
في هذا المر يتم حذف index المسمي EMP – Ename – sal
6- حالات إنشاء ال Index وحالات عدم إنشاءه
- حالات إنشاء الIndex
يجب إنشاء ملف فهرس index في الحالات التالية
- وجود قيم مختلفة كثيرة في الحقل المراد إنشاء index في أساسه
- وجود عدد كبير من القيم الحالية Null في الحقل المراد إنشاءindex على أساسه
- استعمال الحقل المراد إنشاء index على أساسه كثيرا في الاستعلام باستعمال جملة Where
- وجود عدد كبير من البيانات في الجدول وغالبا ما تعبد الاستعلامات من 2 إلى 4 بالمائة من البيانات
- حالات عدم انشاء ال Index
- الجداول الصغيرة (تحتوي على بيانات قليلة )
- عدم استعمال الحقل المراد إنشاء index على أساسه كثيرا في الاستعلام
- غالبا ما تعيد الاستعلامات أكثر من 2 إلى 4 بالمائة من لبيانات
- الجدول كثير التحديث
Create index name on employee (name);
وعند تنفيذ هذا الأمر تحصل على نتيجة التنفيذ كما في الشكل 13
Create index part_name on employee (name (5));