Pourquoi le moteur MyISAM de MySQL ne supporte pas les clés étrangères?

j'écris une application web pour mes études qui inclut la recherche en texte intégral et les clés étrangères.

J'ai lu quelque part, MyISAM moteur est adapté pour la recherche plein texte, et InnoDB pour les clés étrangères.

dans cette situation, quel moteur devrais-je utiliser pour obtenir les meilleures performances?

  • pourquoi MyISAM ne soutient pas la relation clé étrangère mais InnoDB Oui?
  • pourquoi MyISAM supporte la recherche en texte intégral mais pas InnoDB?
30
demandé sur Firefox101 2012-10-19 13:27:58

2 réponses

  1. veuillez me dire, dans cette situation, quel moteur dois-je utiliser pour améliorer mes performances?

    la performance de chaque moteur de stockage dépendra des requêtes que vous effectuerez. Cependant, sachez que différentes tables d'une même base de données peuvent utiliser des moteurs de stockage différents.

  2. pourquoi MyISAM engine ne supporte pas la relation clé étrangère et InnoDB si?

    tel que documenté Différences Entre Les Clés Étrangères:

    à un stade ultérieur, des contraintes de clé étrangère seront mises en œuvre pour MyISAM tables ainsi.

    par conséquent, les contraintes des clés étrangères n'ont tout simplement pas encore été mises en œuvre dans MyISAM.

EDIT: ce commentaire étant supprimé de docs, il apparaît qu'il n'est plus prévu de mettre en œuvre des contraintes de clé étrangère dans MyISAM moteur.

  1. pourquoi MyISAM engine supporte la recherche en texte intégral et InnoDB pas?

    comme indiqué sous Quoi de neuf en MySQL 5.6:

    Vous pouvez créer FULLTEXT index InnoDB tables de, et de les interroger à l'aide de la MATCH() ... AGAINST syntaxe.

    par conséquent, la recherche en texte intégral a été implémentée dans InnoDB à partir de MySQL 5.6.

39
répondu eggyal 2016-01-22 23:27:42

je me souviens de l'époque où mysql n'avait que myisam et innodedb était en développement. MyIsam n'a pas de clés étrangères parce que c'est un vieux système qui ne supporte pas les relations dans la base de données. Il n'utilisera jamais de clés étrangères! Pour l'Utiliser vous devez innodb. Si vous n'avez pas besoin de tout, comme les relations en DB, utilisez MyISAM pour obtenir une meilleure performance.

0
répondu rafal 2017-11-10 14:35:55