Этот вопрос проверяет понимание стратегии создания индексов в базах данных для оптимизации запросов и предотвращения избыточности.
Индексы в базах данных — это структуры данных (чаще всего B-деревья), которые ускоряют извлечение строк по значениям определённых столбцов. Они работают подобно алфавитному указателю в книге, позволяя быстро найти нужную информацию, не просматривая все страницы подряд.
WHERE status = 'active'), и этот столбец не индексирован, СУБД будет выполнять полное сканирование таблицы (FULL TABLE SCAN), что ресурсоёмко для больших таблиц.BETWEEN, >, <) и по префиксу строк.Представьте таблицу orders с миллионами записей. Запрос для поиска заказов конкретного клиента за последний месяц без индекса будет очень медленным.
-- Медленный запрос без индекса
SELECT * FROM orders
WHERE customer_id = 12345
AND order_date >= '2024-03-01';
-- Создание составного индекса для ускорения
CREATE INDEX idx_orders_customer_date
ON orders(customer_id, order_date);
-- После создания индекса тот же запрос будет использовать
-- индекс для быстрого поиска по customer_id и order_date.Индексы применяются в реляционных (PostgreSQL, MySQL) и многих NoSQL базах данных. Важно помнить о компромиссах:
Вывод: Дополнительные индексы стоит создавать для столбцов, которые часто участвуют в условиях WHERE, JOIN, ORDER BY и GROUP BY в медленных, но критичных для производительности запросах. Решение должно приниматься после анализа планов выполнения запросов (EXPLAIN) и мониторинга реальной нагрузки.