Indexes help MySQL find rows faster by reducing the number of full-table scans. Without indexes, MySQL scans every row in the table for matching values, which is extremely slow on large datasets.
- Use indexes on columns used in WHERE, JOIN, ORDER BY, or GROUP BY.
- Avoid over-indexing — indexes slow down INSERT, UPDATE, and DELETE.
a. Index on a Single Column:-
General Syntax:-
CREATE INDEX index_name ON table_name(column_name);
Example:-
CREATE TABLE users (
id INT,
name VARCHAR(100),
email VARCHAR(100)
);
INSERT INTO users VALUES
(1, ‘Arun’, ‘arun@gmail.com’),
(2, ‘Riya’, ‘riya@yahoo.com’),
(3, ‘Ali’, ‘ali@gmail.com’);
Query:
SELECT * FROM users WHERE email = ‘ali@gmail.com’;
Output:-

b. For creating an index in MySQL:-
General Syntax:-
CREATE INDEX idx_email ON users(email);
Example:-
CREATE UNIQUE INDEX idx_username ON users(name);
Attempt to Insert Duplicate:
INSERT INTO users VALUES (4, ‘Riya’, ‘riya2@yahoo.com’);
Output: (Error occurs as it prevents from inserting duplicate name values. )
ERROR 1062 (23000): Duplicate entry ‘Riya’ for key ‘idx_username’
c. Searching for users by email:
General Syntax:-
SELECT * FROM users WHERE email = ‘john@example.com’;
Example:-
CREATE INDEX idx_name_email ON users(name, email);
Query:
SELECT * FROM users WHERE name = ‘Riya’ AND email = ‘riya@yahoo.com’;
Output:-
