Maison > Article > base de données > Comment résoudre l'erreur « Impossible de réouvrir la table » de MySQL lors de l'auto-adhésion ?
Surmonter l'erreur « Impossible de rouvrir la table » de MySQL
Lorsque vous travaillez avec MySQL, vous pouvez rencontrer le message frustrant « Impossible de rouvrir la table » " erreur lors de la tentative de réutilisation d'une table temporaire plusieurs fois. Cette limitation peut nuire à l'évolutivité et aux performances dans certains scénarios.
Pour comprendre le problème, considérons la requête suivante :
SELECT * FROM search INNER JOIN search f1 ON f1.baseID = search.baseID AND f1.condition = condition1 INNER JOIN search f2 ON f2.baseID = search.baseID AND f2.condition = condition2 ... INNER JOIN search fN ON fN.baseID = search.baseID AND fN.condition = conditionN
Dans cet exemple, la table "recherche" est jointe à elle-même plusieurs fois en utilisant des tables temporaires pour filtrer des lignes spécifiques. Cependant, MySQL interdit la réouverture des tables temporaires.
Une solution de contournement simple : dupliquer la table temporaire
Une solution simple consiste simplement à dupliquer la table temporaire avant de l'utiliser dans chaque jointure. . Cela garantit que chaque jointure possède sa propre instance unique de la table temporaire, éliminant ainsi l'erreur « Impossible de rouvrir la table ».
Cette approche fonctionne bien si la table temporaire est relativement petite, comme c'est souvent le cas avec tables temporaires. Cependant, pour les tables temporaires plus grandes, la duplication de la table peut ne pas être pratique.
Exploration et solutions futures
Comme mentionné par Kris dans la question initiale, en utilisant la fonction GROUP_CONCAT ne convient pas dans ce scénario spécifique. Cependant, cela reste une solution viable pour certains cas d'utilisation.
La limitation "Impossible de rouvrir la table" est un problème connu dans MySQL. Bien qu’il existe des solutions de contournement et des approches alternatives, une véritable solution reste insaisissable. Il serait bénéfique que les futures versions de MySQL corrigent cette limitation et améliorent la flexibilité de travail avec des tables temporaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!