PRIMARY KEY
Создать первичный ключ.
CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(100), age INT);
Первичный ключ автоматически индексируется и гарантирует уникальность.
Оптимизация запросов нужна, чтобы уменьшить время выполнения и расход ресурсов базы данных.
Главный инструмент урока — индекс: структура данных, которая помогает быстрее находить строки без полного просмотра таблицы.
Ключевые команды: 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 в этом уроке не используется.