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 ?

Comment résoudre l'erreur « Impossible de réouvrir la table » de MySQL lors de l'auto-adhésion ?

DDD
DDDoriginal
2024-11-19 09:36:03317parcourir

How to Solve MySQL's

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn