SQL Indexes - Speeding Up Data Retrieval
Introduction
Imagine you’re trying to find one student’s report from thousands of records. Scanning everything line by line would be slow. What if your database had a smart “table of contents” to jump straight to the relevant entry? That’s what an index does in SQL.
What is an Index in SQL?
A SQL INDEX
is a performance optimization structure. It allows the database to find and retrieve data faster — similar to how a book index helps locate chapters quickly.
When Should You Use Indexes?
- On columns frequently used in
WHERE
clauses - On columns used in
JOIN
orORDER BY
- For large datasets where performance matters
Sample Table – students
CREATE TABLE students (
roll_no INT PRIMARY KEY,
name VARCHAR(50),
class VARCHAR(10),
city VARCHAR(30)
);
INSERT INTO students VALUES
(1, 'Aarav Sharma', '10A', 'Delhi'),
(2, 'Diya Iyer', '9B', 'Chennai'),
(3, 'Sneha Patil', '10A', 'Pune'),
(4, 'Mehul Agarwal', '9B', 'Delhi'),
(5, 'Saira Bano', '8C', 'Hyderabad');
1. Create an Index on City
Let’s create an index on the city
column since we often search students by city:
CREATE INDEX idx_city
ON students(city);
2. Query with Index Usage
Now, this query becomes faster with the index:
SELECT name, class
FROM students
WHERE city = 'Delhi';
name | class
----------------+-------
Aarav Sharma | 10A
Mehul Agarwal | 9B
3. Composite Index (Multiple Columns)
Create an index on both class
and city
for combined filters:
CREATE INDEX idx_class_city
ON students(class, city);
This helps with queries like:
SELECT name
FROM students
WHERE class = '9B' AND city = 'Delhi';
name
----------
Mehul Agarwal
4. Unique Index
Indexes can also enforce uniqueness (aside from primary keys):
CREATE UNIQUE INDEX idx_unique_name
ON students(name);
This prevents duplicate names (useful if names must be unique in your context).
5. Drop an Index
DROP INDEX idx_city;
Important Notes
- Indexes improve SELECT performance, but slow down INSERT/UPDATE/DELETE a bit.
- Use only where needed — don’t blindly index every column.
- Use EXPLAIN (in MySQL/PostgreSQL) to see if your index is being used.
Real-World School Use Case
The school admin needs to quickly list students by city and class — indexing those columns speeds up daily reporting, especially when thousands of students are enrolled.
Summary
SQL indexes are the silent speed-boosters of your database. By indexing the right columns — like student names, cities, or class identifiers — you can dramatically improve query performance. Just like a smart librarian, indexes help SQL find answers fast.
What’s Next?
Next, we’ll learn about SQL Transactions — ensuring data consistency when multiple queries run together.
QUIZ
Question 1:What is the main benefit of creating an index on a table column in SQL?
Question 2:Creating too many indexes can negatively affect INSERT and UPDATE performance.
Question 3:Which of the following statements are true about SQL indexes?
Question 4:Given the following SQL, what is being done?
CREATE INDEX idx_rollno ON students(roll_no);
CREATE INDEX idx_rollno ON students(roll_no);
Comments
Loading comments...