السلام عليكم
حصل التماس في عقلي بين التفريق بين البرايماري كي والإنديكس
هل من الممكن شرح فروقاتها
اطيب تحيه لكم
السلام عليكم
حصل التماس في عقلي بين التفريق بين البرايماري كي والإنديكس
هل من الممكن شرح فروقاتها
اطيب تحيه لكم
بالنسبة لسؤالك عن المفتاح الأساسي Primary Key ، انظر هذا الموضوع واقرأه كاملا:
الأسس العلمية لقواعد البيانات, الطريق الصحيح والوسائل الحقيقية للتعلم
أما بالنسبة للIndex فهو بنية بيانات (شجرية) يستخدمها محرك قاعدة البيانات لتسريع البحث والوصول للبيانات عبر تقليل علميات I/O اللازمة من وإلى القرص، وذلك بمفهوم قريب من مفهوم فهرس الكتاب الذي تستخدمه لمعرفة في أي صفحة يبدأ الموضوع المعين، أو أول ورود لكلمة معينة في الكتاب كله. بنفس الطريقة بدون الindex سيضطر محرك قاعدة البيانات لعمل بحث على كامل الجدول في كل عملية استرجاع بيانات، وفي كل عملية بحث يتوجب عليه قراءة ومقارنة كل قيمة مخزنة بالقيمة المطلوب البحث عنها، مما يؤدي لزيادة عمليات الإدخال والإخراج.
إذا كان الفهرس على حقل واحد فيسمى Simple Index ، وإلا فيسمى Composite index ، وإذا كان على حقل unique فيسمى unique index ويدخل في هذا النوع الفهارس المكونة على حقول مفاتيح أساسية.
لا يسمح في الunique indexes بإدخال قيم مكررة، ويتوجب في كل عملية إدخال على المحرك إعادة ترتيب الفهرس مرة أخرى. عكسه ال Nonunique index الذي يسمح بإدخال قيم مكررة، وبنفس الطريقة يتوجب عليه إعادة ترتيب البيانات في كل عملية إدخال.
هذا من ناحية ترتيب البيانات وطريقة الإدخال، أما من ناحية طريقة الحفظ فتنقسم لنوعين:
1- clustered indexes: هنا تخزن البيانات مع عقد مداخل الفهرس. البحث أسرع لأنه يرجع البيانات مرتبة حسب ترتيب الفهرس، ولكن كل عمليات الرجوع هذه يجب أن تكون بعد المرور على الفهرس، مما يعني عمليات I/O إضافية.
2- non-clustered indexes: بعكس الclustered indexes ، هنا لاتخزن البيانات مع عقد مداخل الفهرس، بل تتضمن كل عقدة واحدا من الآتي:
* إذا لم يوجد clustered index في الجدول، تخزن كل عقدة من عقد الفهرس الrow ID ، كل row ID يؤشر لسجل بيانات فعلي في الجدول، ويتكون كل row ID من رقم معرف ملف البيانات، ورقم الصفحة page no داخل هذا الملف، والسجل في هذا الملف. مما يعني أنه يؤشر مباشرة لمكان تخزين البيانات الفعلي.
* إذا وجد clustered index فسيتضمن الnon-clustered index قيمة الclustered index للسجل المقصود، وتخزن هذه القيمة في عقدة الفهرس، وتستعمل للبحث في الclustered index.
(مترجم من كتاب SQL Server Administrators Companion).
فكر بطريقة أخرى
اخي الغالي walcom
شكرا ً لك ياخي العزيز
وجعل اتعابك كلها حسنات يارب
اطيب تحيه لك
هذا الموضوع مغلق.