Минимальный пример: CREATE INDEX idx_students_age ON students(age), затем EXPLAIN SELECT * FROM students WHERE age = 20.
Индекс полезен для частых фильтров, сортировок и группировок, но он занимает место и замедляет вставку, обновление и удаление.
Топ-3 ошибки: индексировать все столбцы подряд, не проверять план через EXPLAIN, ждать пользы от индекса на очень маленькой таблице.
💻 Выполнимые примеры
Таблица employees и индекс age
Пример из источника.
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
age INT,
salary INT,
department_id INT
);
CREATE INDEX idx_age ON employees (age);
SELECT *
FROM employees
WHERE age = 30;
Почему так: Если таблица большая и поиск по age частый, индекс помогает MySQL быстрее найти строки.
Индекс для сортировки
Источник показывает индекс по name, age для ORDER BY.
CREATE INDEX idx_name_age ON employees (name, age);
SELECT *
FROM employees
ORDER BY name, age;
Почему так: Составной индекс может помочь сортировке, если порядок столбцов в индексе соответствует запросу.
Проверка через EXPLAIN
Перед и после индекса сравните план.
EXPLAIN
SELECT *
FROM employees
WHERE age = 30;
Почему так: Смотрите, какой индекс указан в плане и сколько строк оценивает MySQL.