ایندکس‌گذاری دیتابیس

ایندکس دیتابیس: B-Tree و ساختار آن، ایندکس ترکیبی، هزینه‌های ایندکس و قواعد بهینه‌سازی کوئری

ایندکس چیست؟

بدون ایندکس، جستجوی کاربر = اسکن کل جدول (O(n)) — با ۱۰۰M رکورد یعنی ثانیه‌ها! ایندکس = ساختار داده‌ای جدا برای «یافتن سریع» — O(log n).

B-Tree — پادشاه ایندکس‌ها

درخت متوازن با پر بودن صفحات دیسک:

همان BST از دوره DSA، اما با شاخه‌های چندتایی (نه دوتایی) و بهینه دیسک!

ایندکس ترکیبی (Composite)

ایندکس روی (user_id, created_at):

قاعده ترتیب: ستون «انتخابی‌تر» (equality) اول، بازه‌ای آخر — مثل دفترچه تلفن: اول نام خانوادگی، بعد نام.

هزینه‌های ایندکس

ایندکس مجانی نیست:

هزینهتوضیح
فضاهر ایندکس = کپی بخشی از داده
نوشتن کندترهر INSERT/UPDATE = به‌روزرسانی همه ایندکس‌ها!
انتخاب بدایندکس بی‌استفاده = بار اضافه

قاعده: ایندکس برای الگوی «خواندن غالب» — جدول نوشتنی سنگین، ایندکس کمتر!

قواعد طلایی

  1. ایندکس روی ستون‌های WHERE/JOIN/ORDER BY پرکاربرد
  2. ستون‌های با «کاردینالیتی بالا» (مقادیر متنوع) — ایندکس روی «جنسیت» بی‌فایده!
  3. کوئری را EXPLAIN کن — آیا ایندکس استفاده شد؟
  4. ایندکس بی‌استفاده را حذف کن (هزینه می‌دهد!)
  5. Covering Index: کوئری فقط از ایندکس جواب بگیرد (بدون جدول!)
نکته: در مصاحبه وقتی «کوئری کند» می‌گویند، اولین پاسخ: «EXPLAIN بگیریم، ایندکس مناسب روی ستون‌های فیلتر — ترکیبی با ترتیب درست». این پاسخ ۸۰٪ مسیر را می‌رود!

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.

ابزارهای مرتبط