Skip to main content
Documents
Clauses StatementsKeywordsExpressionsFunctionsIndexesPerformance Optimization

MySQL Adding Index to Table Indexes

Indexes in MySQL are data structures that improve the speed of data retrieval operations on a database table. They allow for faster search and retrieval by maintaining a sorted order of the indexed column values.

Usage

Indexes are used to optimize query performance, especially for large datasets. They are applied to columns frequently used in `WHERE` clauses, JOIN operations, or as sorting criteria. While indexes speed up retrieval operations, they can slow down data modification operations like `INSERT`, `UPDATE`, and `DELETE` due to the need to update the index.

CREATE INDEX index_name
ON table_name (column1, column2, ...);

In this syntax, `CREATE INDEX` creates a new index on the specified columns of the table, which helps speed up query execution times. Alternatively, you can use the `ALTER TABLE` command to add an index to an existing table:

ALTER TABLE table_name
ADD INDEX index_name (column1, column2, ...);

Examples

1. Basic Index Creation

CREATE INDEX idx_lastname
ON employees (last_name);

This example creates an index named `idx_lastname` on the `last_name` column of the `employees` table to improve search efficiency on last names.

2. Composite Index

CREATE INDEX idx_name_department
ON employees (first_name, department_id);

A composite index is created on `first_name` and `department_id`, which optimizes queries that filter by both columns. The order of columns in a composite index is crucial as it affects how the index is utilized in multi-column search scenarios.

3. Unique Index

CREATE UNIQUE INDEX idx_email
ON users (email);

This creates a unique index on the `email` column of the `users` table, ensuring that all email addresses in the table remain distinct.

Other Types of Indexes

  • Full-text Index: Used for text searching, particularly in large text columns.
  • Spatial Index: Used for optimizing spatial data types, such as geometrical shapes.

Tips and Best Practices

  • Index selectively. Only index columns that are frequently searched or sorted to avoid unnecessary overhead.
  • Monitor index usage. Regularly analyze and maintain indexes to ensure they're being used effectively and not degrading performance. Tools like `EXPLAIN` can be used for query analysis to understand index usage.
  • Limit the number of indexes. Excessive indexing can slow down data modification operations like `INSERT`, `UPDATE`, and `DELETE`.
  • Use composite indexes wisely. Consider the order of columns in a composite index since it affects how the index is utilized in queries, especially in multi-column search scenarios.
  • Avoid indexing small tables. Indexes on small tables often provide little to no performance benefit and may add unnecessary complexity.
  • Understand storage implications. Indexes require additional storage, which could be a consideration for very large databases.

SQL Upskilling for Beginners

Gain the SQL skills to interact with and query your data.
Start Learning for Free