وقتی یک کوئری کند می‌شود، نخستین جایی که باید نگاه کرد ایندکس‌هاست. ایندکس پایگاه داده دقیقاً مثل فهرست انتهای یک کتاب کار می‌کند؛ به‌جای ورق زدن همهٔ صفحات، مستقیم به جای درست می‌رود. بدون ایندکس مناسب، پایگاه داده مجبور است کل جدول را سطر به سطر بخواند و این با رشد داده‌ها به‌سرعت ناتوان‌کننده می‌شود.

بیشتر پایگاه‌های داده ایندکس را به‌صورت ساختار درختی B-tree نگه می‌دارند که جست‌وجوی برابری و بازه‌ای را بسیار سریع می‌کند. کافی است ایندکس را روی ستون‌هایی بگذارید که مرتب در شرط WHERE، در JOIN یا در ORDER BY ظاهر می‌شوند. ابزار EXPLAIN به شما نشان می‌دهد پایگاه داده برای هر کوئری چه نقشه‌ای انتخاب کرده و آیا از ایندکس استفاده شده یا نه.

اما ایندکس رایگان نیست. هر ایندکس فضای دیسک می‌گیرد و مهم‌تر اینکه هر درج، حذف یا به‌روزرسانی باید همهٔ ایندکس‌های مرتبط را هم تازه کند. جدولی با ایندکس‌های بیش از حد، در عملیات نوشتن کند می‌شود. هنر کار، یافتن کمینهٔ مجموعهٔ ایندکس‌هایی است که مهم‌ترین کوئری‌ها را پوشش می‌دهد.

برای کوئری‌هایی که چند ستون را با هم فیلتر می‌کنند، ایندکس ترکیبی مؤثرتر از چند ایندکس جداست، اما ترتیب ستون‌ها در آن اهمیت دارد. ایندکس پوششی هم که همهٔ ستون‌های موردنیاز کوئری را در خود دارد، اجازه می‌دهد پاسخ بدون مراجعه به خود جدول آماده شود. ایندکس‌گذاری درست، ارزان‌ترین راه برای جهش سرعت یک اپلیکیشن است.