تحتاج الفهارس إلى الصيانة كلما تغيرت البيانات التي تمثلها. عند إضافة صف جديد، لا يكتب المحرك بيانات الصف فقط، بل يضيف أيضًا المدخلات اللازمة إلى الفهارس المرتبطة بالجدول. وعند تغيير قيمة مفهرسة، يحتاج إلى تحديث تمثيلها في الفهرس حتى تعكس عمليات البحث القيمة الجديدة بصورة صحيحة.
لهذا السبب، ليست إضافة فهرس إلى كل عمود استراتيجية مناسبة دائمًا. تخيل جدول مهام يستقبل آلاف التعديلات، بينما يقرأ التطبيق معظم المهام حسب معرف المستخدم فقط. قد يفيد فهرس معرف المستخدم، لكن فهرسة أعمدة لا تستخدم في البحث أو الربط أو الترتيب قد تضيف تكلفة دون فائدة كافية في هذا الحمل.
مثال
CREATE TABLE tasks (
id INT PRIMARY KEY,
status VARCHAR(20),
INDEX idx_status (status)
) ENGINE=InnoDB;
INSERT INTO tasks VALUES (1, 'open');
UPDATE tasks SET status = 'done' WHERE id = 1;
يغير التحديث قيمة مفهرسة، فتحتاج بنية الفهرس إلى مواكبة التغيير. نقارن لذلك أداء القراءة والكتابة قبل إضافة فهارس جديدة، ونراجع الفهارس المتشابهة أو غير المفيدة اعتمادًا على استخدام التطبيق الفعلي.
باختصار: تحسن الفهارس بعض القراءات، لكنها تستهلك مساحة وتضيف عملًا إلى عمليات الكتابة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.