Indexing in a database is used to speed up retrieval of rows by creating a data structure that allows the database engine to find data without scanning the entire table. Properly used, indexes can significantly reduce query execution times, but they do consume additional space and can slow down write operations.
In depth
Indexing is a critical optimization technique used in databases to enhance the performance of data retrieval operations. When you create an index on a table column, the database builds a separate data structure that holds the indexed column's values along with pointers to the corresponding rows in the table. This allows the database to quickly locate the required records without performing a full table scan, which can be inefficient for large datasets. However, while indexing speeds up read operations, it has a trade-off; each index consumes disk space and can slow down write operations like INSERT, UPDATE, and DELETE because the index must also be updated when the data changes. Therefore, it's vital to choose the right columns to index based on query patterns and performance requirements while monitoring the impact on overall database performance.
Example scenario
In a large e-commerce application, a product table with millions of entries might have queries that frequently filter by product category and price range. By creating a composite index on both the category and price columns, the application can quickly return results for users searching for specific products. This optimization leads to faster page loads and a better user experience during high-traffic sales events, resulting in increased conversions.
Common mistakes
A common mistake is over-indexing, where developers create too many indexes on a table in an attempt to optimize every possible query. This can lead to excessive disk space usage and slower write performance, as the database spends more time maintaining these indexes. Another mistake is not analyzing query performance or using the database's query execution plans to identify which indexes are effective. This can result in unused or redundant indexes that do not benefit query performance but add overhead.
Follow-up questions
- What are some trade-offs you might consider when adding an index to a table?
- Can you explain the difference between a clustered and a non-clustered index?
- How would you go about monitoring the performance impact of your indexes?
- What strategies would you use to identify which indexes to remove?

Preparing for a system design interview?
- A 7-step method for answering any system design question, plus estimation numbers
- 5 worked designs: URL shortener, rate limiter, chat, news feed and file storage
- Guides to caching, databases, queues, consistency and reliability, with a 4-week study plan
- 306 practice questions with answers on caching, databases, queues, microservices, APIs and more
5 worked designs, a 4-week plan and 306 practice questions with answers.
The material stays free to read online. This is the organised, offline, print-ready PDF edition. Secure payment by PayPal; your personal download link is emailed after payment is confirmed. Digital product, no shipping.