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

✅ Решения

📁 Блок: 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, ждать пользы от индекса на очень маленькой таблице.

✅ Решения и разбор

Задание 1

CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    age INT,
    grade DECIMAL(4, 2)
);

Первичный ключ нужен для уникальной идентификации строки. AUTO_INCREMENT удобно для MySQL.

Задание 2

INSERT INTO students (name, age, grade) VALUES
    ('Anna', 20, 1.30),
    ('Boris', 21, 1.70),
    ('Clara', 20, 1.00),
    ('Denis', 22, 2.30);

Данных должно быть достаточно, чтобы запрос по возрасту вернул несколько строк.

Задание 3-5

CREATE INDEX idx_students_age ON students (age);

SELECT *
FROM students
WHERE age = 20;

EXPLAIN
SELECT *
FROM students
WHERE age = 20;

Сначала создаём индекс, затем выполняем рабочий запрос и проверяем план через EXPLAIN.