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

🐛 Ошибки

📁 Блок: 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. Индексируют всё подряд

Симптом: После каждого INSERT/UPDATE база вынуждена обновлять много индексов.

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

Ошибка 2. Не проверяют EXPLAIN

Симптом: Индекс создан, но запрос может его не использовать.

Исправление: Сравнивайте план выполнения до и после индекса.

Ошибка 3. Ждут эффекта на маленькой таблице

Симптом: На небольшой таблице полный просмотр может быть дешевле.

Исправление: Оценивайте размер таблицы и частоту запроса.

Ошибка 4. Путают UNIQUE INDEX и обычный INDEX

Симптом: Обычный индекс не запрещает дубликаты.

Исправление: Для уникальности используйте UNIQUE INDEX или ограничение уникальности.

Ошибка 5. Составной индекс создают в случайном порядке

Симптом: Индекс по нескольким столбцам может не помочь нужному запросу.

Исправление: Согласуйте порядок столбцов индекса с частыми условиями, сортировками и группировками.