Представь книгу на 1000 страниц. Если тебе нужно найти главу про транзакции, ты не будешь читать всю книгу с начала — ты откроешь оглавление в конце. В базах данных такое оглавление называется индексом.
Когда ты делаешь поиск по полю без индекса, СУБД делает Full Table Scan (перебирает миллионы строк вручную).
❌ Медленный запрос:
SELECT * FROM users WHERE email = '[email protected]';
⚡ Решение — добавляем индекс:
-- Делаем это один раз при создании или миграции базы
CREATE INDEX idx_users_email ON users(email);
теперь тот же запрос
SELECT выполнится не за 500 мс, а за 2 мс, потому что база сразу прыгнет к нужной строке.⚠️ Индексы ускоряют выборку (
SELECT), но немного замедляют запись (INSERT, UPDATE), так как базе нужно перестраивать свое «оглавление» при каждом изменении.