Вопрос проверяет понимание того, как индексы ускоряют запросы и какие издержки они вносят при изменении данных.
Индексы ускоряют операции чтения, позволяя базе данных быстрее находить нужные строки. При этом операции записи становятся медленнее, потому что индекс тоже нужно обновлять. Индексы занимают дополнительное место на диске. Поэтому их нужно добавлять осознанно, под реальные запросы.
Индексы — один из ключевых инструментов оптимизации работы с базой данных, но они всегда являются компромиссом.
Определение:
Индекс — это дополнительная структура данных, которая позволяет базе данных быстрее находить строки по определённым столбцам.
По смыслу индекс похож на оглавление в книге.
При чтении данных индексы:
сокращают количество просматриваемых строк
позволяют избежать полного сканирования таблицы
ускоряют SELECT с условиями WHERE, JOIN, ORDER BY
SELECT * FROM users WHERE email = 'test@mail.com';
При наличии индекса по email запрос выполняется значительно быстрее.
При операциях INSERT, UPDATE, DELETE:
каждая операция требует обновления индекса
увеличивается время записи
возрастает нагрузка на диск и память
Чем больше индексов — тем дороже запись.
Индексы ускоряют чтение, но замедляют запись. Их стоит создавать только для часто используемых условий поиска и соединений таблиц.