Navigation

شرح sql بالعربي إنشاء الفهارس sql create index

لدينا جدول اسمة Phonebook يحتوي على اسماء اشخاص Name وارقام هواتفهم Numberوتصنيفهم Category اصدقاء, عائلة، الخ... فإذا أردنا إنشاء فهرس فريد على حقل فسيكونالاختيار الصائب هو الحقل Number علمنا أن حقل الاسم هو حقلمفتاح رئيسي مفهرس تلقائيًا،وحقل التصنيف Category لا يصلح ليكون فهرس فريد بسبب تكرار قيمه. لذلك ننشئ الفهرس بالصيغة

تعتبر الفهارس index احد الاغراض في قواعد البيانات صممت لزيادة سرعة العمليات وذلك عبر توليد جداول بحث داخلية , اذ يشبه فهرس قاعدة المعطيات فهرس كتاب.
يستحسن استخدام الفهارس indexsالأداء في حال كانت الاستعلامات المستخدمة من النوعSelect, ويضر بالأداء في حال كانت العمليات هي عمليات حذف وإدراج وتعديل أي Insert , Delete و Update لانه سيكون مطلوب من تلك العمليات ان تطبق على الجداول الاساسية وعلى الفهارس التابعة للجدول .

يمكن القول أن استخدام الفهارس index يحسن الأداء بشكل يتجاوز ما قد تسببه عمليات التعديلوالحذف من تراجع في الأداء.
كما يمكننا إنشاء فهرس أو مجموعة من الفهارس على جدول معين بحيث يمكن لكل فهرس أن يعملعلى حقل أو على مجموعة من الحقول.
فعندما تتم فهرسة جدول حسب حقل معين، تتم فهرسة سجلات هذا الجدول حسب قيمة هذا الحقلونمطه مما يسمح بإيجاد هذه القيمة سريعًا عندما نجري عملية بحث معتمدة على الحقل المفهرس.
تطبق الفهارس index عادًة على الأعمدة المستخدمة في التعابير where و Order By وتلكالمستخدمة مع التعبير ON الخاص بالتعبير Join .
كما يفيد استخدام الفهارس index مع الحقول التي يقل فيها تكرار القيم حيث تساعد الفهارس علىالحصول على اصطفائية عالية.

للفهارس نوعين:

فهارس فريدة أي لا تسمح بتكرار قيم في الحقل المفهرس.
فهارس غير فريدة تسمح بتكرار القيم ضمن الحقل المفهرس.

لسنا بحاجة إلى فهرسة المفتاح الرئيسي أو الحقول ذات القيد UNIQUE لأن نظام قاعدة البياناتيولد تلك الفهارس تلقائيًا ويقوم بإزالتها حال إزالة صفة المفتاح الرئيسي أو قيد UNIQUE عن هذهالحقول.

مثال:


إذا كان لدينا جدول كبير يحتوي أسماء الزبائن ومعلوماتهم فإن وجود فهرس على حقل اسم الزبونسيسرع عمليات البحث والاستعلام التي تستخدم الاسم. لأن عملية البحث هنا لا تتم بمسح كامل للجدولالأصلي بل بالبحث ضمن جدول الفهرس أولاً قبل الوصول إلى القيم المطابقة في الجدول الأصلي.

انتبة ملاحظة : يؤثر استخدام عدد كبير من الفهارس سلبيًا على الأداء.

إنشاء الفهارس sql create index :
لإنشاء فهرس فريد أي لا يسمح بتكرار قيم الحقل المفهرس نستخدم الصيغة:

CREATE UNIQUE INDEX index_name ON tableName (FieldName);


ولإنشاء فهرس غير فريد أي يسمح بتكرار قيم الحقل المفهرس نستخدم الصيغة:

CREATE INDEX index_name ON tableName (FieldName);

مثال:

لدينا جدول اسمة Phonebook يحتوي على اسماء اشخاص Name وارقام هواتفهم Numberوتصنيفهم Category اصدقاء, عائلة، الخ... فإذا أردنا إنشاء فهرس فريد على حقل فسيكونالاختيار الصائب هو الحقل Number علمنا أن حقل الاسم هو حقلمفتاح رئيسي مفهرس تلقائيًا،وحقل التصنيف Category لا يصلح ليكون فهرس فريد بسبب تكرار قيمهلذلك ننشئ الفهرس بالصيغة
CREATE UNIQUE INDEX myIndex ON Phonebook (Number);

هذه الصيغة ستسرع إعادة نتائج البحث في استعلام من الشكل:
Select * from Phonebook where Number = ‘5437268’;
انتبه:
في حالة الفهارس على حقول سلاسل المحارف، لا يتم البحث ضمن جدول الفهرس في حال تمالاستعلام عن سلسلة محرفية جزئية ( من السلسلة المحرفية الأساسية) لا تبدأ من بداية السلسلةالأصلية ففي استعلام من الشكل:
Select * from tableName where strColumn like ‘%substr’;
لا يُستخدم الفهرس المنشأ على الحقل strColumn وستتم عملية مسح كاملة للجدول الأساسيلإتمام عملية البحث.

حذف الفهارس sql Delete index:

لحذف فهرس نستخدم في SQL التعبير DROP INDEX لكن يحتاج تطبيقه على قواعد البياناتالمختلفة، تعديلات طفيفة في الصيغة SQL Server نحتاج إلى تحديد اسم الجدول والفهرس، أيتكون الصيغة بالشكل:
DROP INDEX myTable.myIndex;

أما في Oracle و DB2 فلا نحتاج إلى اسم الجدول فتصبح الصيغة من الشكل:
DROP INDEX myIndex;

وفي MySQL  نحتاج أيضًا لتحديد اسم الجدول واسم الفهرس كما يلي:
DROP INDEX myIndex ON myTable;

مثال:
إذا أردنا حذف الفهرس numberIndex من الجدول Phonebook نستخدم الصيغة في SQL Server :
DROP INDEX Phonebook.numberIndex;

و أما في Oracle و DB2 سنستخدم :
DROP INDEX numberIndex;

أما في My SQL فنستخدم:
DROP INDEX numberIndex ON Phonebook;


الى هنا انتهينا من كل ما يتعلق بالفيو والجداول المؤقتة والفهارس INDEX  في قواعد البيانات العلائقية ,, سننتقل في الدرس القادم الى قسم جديد وهو الــ TRANSACTION او ما يسمى  بالناقلات ,,,

تابعنا ,,, ليصلك كل جديد وذلك بالاشتراك في المدونة او تسجيل اعجابك بصفحاتنا على مواقع التواصل الاجتماعية ...
مشاركة

أضف تعليق:

0 comments: