Выбор ответа Middle Индексы обновлено
Индекс на внешнем ключе
Вопрос
Создали orders.customer_id REFERENCES customers(id). Появился ли индекс на orders.customer_id?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нет: индекс создаётся для PK и UNIQUE, на FK его делают сами. Автоматически создаются индексы под PRIMARY KEY и UNIQUE (здесь customers.id).
Варианты ответа
- Да: внешний ключ всегда создаёт индекс на дочерней колонке
- Да, но если в таблице
ordersбольше 1000 строк - Нет, и он не нужен: FK проверяется по индексу на
customers.id - Нет: индекс создаётся для PK и UNIQUE, на FK его делают самиправильный ответ
Разбор
Автоматически создаются индексы под PRIMARY KEY и UNIQUE (здесь customers.id). На ссылающейся колонке индекса нет. Без него медленны JOIN по customer_id, выборки заказов клиента и удаление клиента: при удалении база ищет ссылающиеся заказы полным сканом orders. Индекс на customers.id помогает только при вставке заказа.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.