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

🔖 Справочник

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

🔖 Справочник занятия

Команды и функции ниже взяты из темы урока и оформлены как быстрый справочник.

PRIMARY KEY

Создать первичный ключ.

CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(100), age INT);

Первичный ключ автоматически индексируется и гарантирует уникальность.

CREATE UNIQUE INDEX

Создать уникальный индекс.

CREATE UNIQUE INDEX idx_employee_email ON employees (email);

Подходит для email, логина и других значений без дублей.

CREATE INDEX

Создать обычный индекс.

CREATE INDEX idx_employee_name ON employees (name);

Ускоряет поиск, но не запрещает дубликаты.

CREATE FULLTEXT INDEX

Создать полнотекстовый индекс MySQL.

CREATE FULLTEXT INDEX idx_article_text ON articles (content);

Используется для текстового поиска по большим текстовым столбцам.

COMPOSITE INDEX

Создать индекс по нескольким столбцам.

CREATE INDEX idx_department_age_salary ON employees (department_id, age, salary);

Полезен для запросов, где условия часто идут по этим столбцам вместе.

EXPLAIN

Посмотреть план выполнения запроса.

EXPLAIN SELECT * FROM employees WHERE age = 30;

Проверяет, использует ли MySQL индекс.

Полный справочник курса: SQL Reference. Документация по MongoDB в этом уроке не используется.