Выбор ответа Middle Индексы обновлено

Индекс на внешнем ключе

Вопрос

Создали orders.customer_id REFERENCES customers(id). Появился ли индекс на orders.customer_id?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Нет: индекс создаётся для PK и UNIQUE, на FK его делают сами. Автоматически создаются индексы под PRIMARY KEY и UNIQUE (здесь customers.id).

Варианты ответа

  1. Да: внешний ключ всегда создаёт индекс на дочерней колонке
  2. Да, но если в таблице orders больше 1000 строк
  3. Нет, и он не нужен: FK проверяется по индексу на customers.id
  4. Нет: индекс создаётся для PK и UNIQUE, на FK его делают самиправильный ответ

Разбор

Автоматически создаются индексы под PRIMARY KEY и UNIQUE (здесь customers.id). На ссылающейся колонке индекса нет. Без него медленны JOIN по customer_id, выборки заказов клиента и удаление клиента: при удалении база ищет ссылающиеся заказы полным сканом orders. Индекс на customers.id помогает только при вставке заказа.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.