Skip to main content
Documents
Clauses StatementsKeywordsExpressionsFunctionsIndexesPerformance Optimization

Indexes

Indexes are a crucial part of MySQL databases, allowing for faster data retrieval and improved query performance. Without indexes, MySQL must scan an entire table to find relevant data, which can be slow and inefficient for large datasets. By using indexes, MySQL can locate records quickly, reducing the time complexity of queries.

Common Uses of Indexes

  1. Speeding Up SELECT Queries – Indexes allow MySQL to quickly locate the needed data without scanning the entire table.
  2. Enforcing Uniqueness – UNIQUE and PRIMARY KEY indexes ensure that duplicate values are not inserted into specific columns.
  3. Optimizing JOIN Operations – Indexes improve performance when joining multiple tables by reducing the number of rows MySQL has to compare.
  4. Sorting Data Efficiently – ORDER BY operations benefit from indexes, as they allow MySQL to retrieve data in the required order without additional sorting.
  5. Filtering Large Data Sets – WHERE conditions become significantly faster when an indexed column is used in the filter.

Examples of MySQL Indexes

1. Creating a Basic Index

CREATE INDEX idx_customer_name ON customers(name);

Explanation: This creates an index on the name column of the customers table, making queries that filter by name faster.

2. Using a UNIQUE Inde

CREATE UNIQUE INDEX idx_email_unique ON users(email);

Explanation: Ensures that duplicate email addresses are not allowed in the users table.

3. Creating a Composite Index

CREATE INDEX idx_order_customer ON orders(customer_id, order_date);

Explanation: A composite index on customer_id and order_date speeds up queries that filter or sort by these columns.

4. Checking Index Usage

EXPLAIN SELECT * FROM orders WHERE customer_id = 101;

Explanation: The EXPLAIN statement shows whether MySQL is using an index to optimize the query.

5. Dropping an Index

DROP INDEX idx_customer_name ON customers;

Explanation: Removes the index if it's no longer needed to free up storage and improve write performance.

Indexes are one of the most effective ways to improve MySQL performance, but they must be used correctly. While they speed up queries, they also add overhead to write operations. Understanding when and how to use indexes is key to maintaining an optimized database.