Подтвердить что ты не робот

Почему MySQL MyISAM не поддерживает внешние ключи?

Я пишу веб-приложение для своих исследований, которое включает полнотекстовый поиск и внешние ключи.

Я где-то читал, механизм MyISAM подходит для полнотекстового поиска и InnoDB для внешних ключей.

В этой ситуации какой движок следует использовать для лучшей производительности?

  • Почему MyISAM не поддерживает отношения с внешним ключом, но InnoDB делает?
  • Почему MyISAM поддерживает полный текстовый поиск, но InnoDB не работает?
4b9b3361

Ответ 1

  • Скажите мне, в этой ситуации, какой движок я должен использовать для повышения производительности?

    Производительность каждого механизма хранения зависит от запросов, которые вы выполняете. Однако имейте в виду, что разные таблицы в одной базе данных могут использовать разные механизмы хранения.

  • Почему механизм MyISAM не поддерживает отношения внешнего ключа, и InnoDB делает?

    Как описано в разделе Отличия внешнего ключа:

    На более позднем этапе ограничения внешних ключей будут реализованы и для таблиц MyISAM.

    Поэтому ограничения внешнего ключа просто еще не реализованы в MyISAM.

РЕДАКТИРОВАТЬ. Поскольку этот комментарий удален из документов, похоже, что больше не планируется внедрять ограничения внешнего ключа в движке MyISAM.

  1. Почему движок MyISAM поддерживает полнотекстовый поиск, а InnoDB - нет?

    Как описано в Что нового в MySQL 5.6:

    Вы можете создавать индексы FULLTEXT в таблицах InnoDB и запрашивать их с помощью синтаксиса MATCH() ... AGAINST.

    Поэтому полный текстовый поиск был реализован в InnoDB по версии MySQL 5.6.

Ответ 2

Я помню времена, когда в mysql существовал только myisam и innodedb. MyIsam не имеет внешних ключей, потому что это старая система, которая не поддерживает отношения в базе данных. Он никогда не будет использовать внешние ключи! Чтобы использовать его, у вас есть innodb. Если вам не нужны все материалы, такие как отношения в БД, используйте MyISAM для повышения производительности.