Индексирование
Индекс — это как предметный указатель в конце книги: он позволяет базе данных сразу перейти к совпадающим строкам вместо сканирования каждой. Без индексов запросы становятся медленнее по мере роста данных — нормально на 100 строках, мучительно на 1 000 000.
Практическое руководство:
- Индексируйте столбцы, по которым вы часто фильтруете или соединяете (например,
author_id,email). - Первичные ключи индексируются автоматически.
- Не индексируйте всё подряд — каждый индекс ускоряет чтение, но замедляет запись и занимает место.
- Добавляйте индексы, когда видите медленный запрос, а не превентивно для каждого столбца.
Честный способ выяснить, помогает ли индекс, — спросить базу данных, а не гадать. У каждого SQL-движка есть EXPLAIN (в Postgres — EXPLAIN ANALYZE), который показывает план, который он применит:
EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = '...';
Если на большой таблице вывод говорит Seq Scan, база данных читает каждую строку — признак того, что индекс помог бы. После его добавления он должен переключиться на Index Scan. Это отличная задача, чтобы передать AI: вставьте медленный запрос и вывод EXPLAIN и спросите, какой индекс добавить и почему. Вы сохраняете контроль, понимая ответ, а не заучивая теорию индексов.