← К оглавлению занятия

💻 Примеры

📁 Блок: SQL / MySQL / Оптимизация ⏱️ Время изучения: ~90 мин 🎯 Сложность: Продвинутая

⚡ Кратко: примеры

Оптимизация запросов нужна, чтобы уменьшить время выполнения и расход ресурсов базы данных.

Главный инструмент урока — индекс: структура данных, которая помогает быстрее находить строки без полного просмотра таблицы.

Ключевые команды: CREATE INDEX, CREATE UNIQUE INDEX, CREATE FULLTEXT INDEX, EXPLAIN.

Минимальный пример: 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.