Задать вопрос
@immelnikoff
Изучаю БД

Индекс нужно создавать на внешний ключ или на поле в родительской таблице, на которое ссылается внешний ключ?

Я чет запутался и нигде не делают на этом акцент. Все таблицы InnoDB.
  • Вопрос задан
  • 74 просмотра
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Stepik
    PRO C#. Базы данных
    2 месяца
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Java-разработчик + ИИ
    9 месяцев
    Далее
Решения вопроса 1
Melkij
@Melkij
DBA для вашего PostgreSQL?
Оба конца должны быть с индексами.
Один хвост проверяется при вставке и изменении таблицы, чтобы поле ссылка вело куда-нибудь.
Обратная проверка выполняется при изменении/удалении из таблицы справочника, чтобы не удалить случайно строку на которую кто-то ещё ссылается.

innodb требует, чтобы индекс на referenced (на которую ссылаемся) табличке уже был. Индекс на табличке которой alter table делаем будет неявно создан если отсутствовал. Таким образом innodb требует наличие индексов на обоих концах FK.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы