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

💻 Примеры

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

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

Summary session 11 соединяет два блока: индексы и пользовательские функции.

Индекс ускоряет поиск, сортировку или группировку, но занимает место и замедляет изменения данных.

EXPLAIN показывает план выполнения и помогает проверить, использует ли MySQL индекс.

Пользовательская функция создаётся через CREATE FUNCTION и возвращает одно значение через RETURN.

Минимальный пример повторения: CREATE INDEX idx_age ON employees(age); и SELECT square_root(25);.

Топ-3 ошибки: индексировать всё подряд, не смотреть EXPLAIN, путать функцию с процедурой.

Пример 1. Индекс по возрасту

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);

EXPLAIN
SELECT *
FROM employees
WHERE age = 30;

Индекс имеет смысл, если таблица большая и поиск по age выполняется часто.

Пример 2. Составной индекс для сортировки

CREATE INDEX idx_name_age ON employees(name, age);

SELECT *
FROM employees
ORDER BY name, age;

Составной индекс полезен, когда запросы регулярно используют эти столбцы вместе.

Пример 3. Вызов функции

SELECT square_root(25);
SELECT calculate_age('1990-01-01');
SELECT greet_user('Alice');

Функции вызываются как выражения и возвращают значения в результат запроса.