بدون ایندکس، پایگاه داده برای پیدا کردن یک ردیف باید کل جدول را بخواند (full scan). ایندکس ساختاری مرتب (معمولاً B-tree) است که مسیر سریع می‌دهد.

CREATE INDEX idx_users_email ON users (email);

SELECT * FROM users WHERE email = 'a@b.com';

چه زمانی ایندکس بسازیم؟

  • ستون‌هایی که زیاد در WHERE، JOIN یا ORDER BY استفاده می‌شوند.
  • ستون‌هایی با مقادیر متنوع (انتخاب‌پذیری بالا).

هزینه‌ها

  • فضای بیشتر روی دیسک.
  • درج و به‌روزرسانی کندتر چون ایندکس هم باید به‌روز شود.
  • ایندکس زیاد بی‌فایده است؛ با EXPLAIN بررسی کنید که کوئری واقعاً از آن استفاده می‌کند.