سؤال

أنا أعمل في SQL Server 2005. لدي جدول سجل الأحداث الذي يتتبع إجراءات المستخدم ، وأريد التأكد من أن الإدراج في الجدول أسرع قدر الإمكان. حاليا لا يحتوي الجدول على أي فهارس. هل إضافة فهرس واحد غير متكامل يتباطأ إدراج على الإطلاق؟ أم أنها فهارس مجمعة فقط تبطئ إدراج؟ أو هل يجب أن أضيف فهرسًا متجمعًا ولا تقلق بشأنه؟

هل كانت مفيدة؟

المحلول

ستتباطأ الفهارس ، المجمعة أو غير المقيدة ، إدراجًا دائمًا حيث يتعين على SQL الحفاظ على كل من الجدول والفهرس. هذا التباطؤ بالمعنى "المطلق" وقد لا تلاحظ ذلك. أود أن أضيف أي فهارس ضرورية لاسترداد بياناتك.

نصائح أخرى

نعم ، سيستغرق أي فهرس بعض الوقت لمواكبة ذلك عند القيام بذلك INSERT, UPDATE, DELETE عمليات. كلما زاد عدد المؤشرات التي لديك ، زادت الوقت الذي نتحدث عنه.

ولكن في النهاية يعتمد ذلك على ما هو أكثر أهمية بالنسبة لك - أداء الاستعلام الجيد (ثم أضف مؤشرات حسب الحاجة) ، أو أداء إدراج جيد (ثم يكون لديك عدد قليل من المؤشرات).

ما هي العملية التي تقوم بها في كثير من الأحيان ؟؟

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

تحتوي تجمعات التخزين هذه على سجلات فهرس لها القيم المفهرسة ونوع من المؤشر إلى سجل الجدول الأساسي. في حالة MySQL ، هذا المؤشر هو المفتاح الأساسي للجدول الأساسي.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top