الإفراط في الفهرسة
إذا كان مفهوم الفهرسة القائمة على الدوال جديداً عليك، فقد تغريك فكرة فهرسة كل شيء، لكن هذا في الواقع آخر ما ينبغي أن تفعله. والسبب أن كل فهرس يسبّب صيانة مستمرة. والفهارس القائمة على الدوال مزعجة بوجه خاص لأنها تجعل إنشاء الفهارس المكرّرة سهلاً جداً.
إن أعجبك هذا الموضوع، قد يعجبك أيضاً…
… أن تشترك في القوائم البريدية، وتحصل على ملصقات مجانية، وتشتري كتابي، أو تنضم إلى دورة تدريبية.
يمكن تنفيذ البحث غير الحسّاس لحالة الأحرف المذكور أعلاه بدالة LOWER أيضاً:
SELECT first_name, last_name, phone_number
FROM employees
WHERE LOWER(last_name) = LOWER('winand')
لا يستطيع فهرس واحد دعم طريقتي تجاهل حالة الأحرف معاً. ويمكننا طبعاً إنشاء فهرس ثانٍ على LOWER(last_name) لهذا الاستعلام، لكن ذلك يعني أن على قاعدة البيانات صيانة فهرسين مقابل كل عبارة insert وupdate وdelete (انظر أيضاً الفصل 8، «تعديل البيانات»). ولكي يكفي فهرس واحد، ينبغي أن تستخدم الدالة نفسها باستمرار في جميع أنحاء تطبيقك.
نصيحة
وحّد مسار الوصول بحيث يستطيع فهرس واحد خدمة عدة استعلامات.
تحذير
أحياناً تستخدم أدوات ORM دالتَي UPPER وLOWER دون علم المطوّر. فمثلاً تحقن Hibernate دالة LOWER ضمنياً في عمليات البحث غير الحسّاسة لحالة الأحرف.
نصيحة
احرص دائماً على فهرسة البيانات الأصلية، فهي غالباً أنفع معلومات يمكنك وضعها في فهرس.