Bonjour,
Je débute le MySQL et j'ai un problème avec la taille (trop grosse) des fichiers temporaires créés par une requête simple, mais avec un fichier qui fait 15 millions de lignes (fichier texte de base de 1 Go).
Voici une description plus précise du problème :
J'exécute en fait la requête suivante :
INSERT INTO table2
SELECT Champ1, Champ2, CONCAT(Champ3, Champ4), Sum(Champ5)
FROM table1
GROUP BY Champ1, Champ2, CONCAT(Champ3, Champ4), Left(Champ1,2)
HAVING (((Left(Champ1,2))="expr1" or (Left(Champ1,2))="expr2"));
qui insère dans la table2 les champs de table1, en concaténant deux de ces champs, en regroupant selon les champs 1 et 2 et en sommant sur le dernier champ.
La table1 fait compte 15 millions de lignes et fait 1 Go, ce qui est certes beaucoup. Cependant, est-il normal que la requête créé un fichier temporaire de plus de 20 Go et tourne plus de 2H?
J'ai cherché à voir si la modification des paramètres dans MySQL admin pouvaient régler la chose, mais il y a tellement de paramètres que je m'y perds un peu. J'ai vu entre autres des paramètres tels que lock size, max heap size, max sort file size, mais j'ignore lequel est le bon (et en augmentant trop un de ces paramètres j'ai fait planter le PC dont la mémoire vive était bouffée par un "truc-size", PC qui n'a bien remarché qu'au 2ème redémarrage :zen:).
Il me semble que cette requête est simple et que ce qui se produit n'est pas normal. Avez-vous une idée de ce qui peut clocher?
Merci.
Cordialement