web-dev-qa-db-fra.com

Comment puis-je copier le résultat d'expliquer MySQL dans une table?

J'aimerais archiver les résultats d'une série de requêtes expliquer les plans dans une table pour une analyse ultérieure.

J'ai créé une table contenant tous les champs d'un résultat expliquant, mais je ne peux pas comprendre comment le peupler de l'exécution d'une commande Explique.

J'ai compris comment exporter un fichier .sql dans MySQL Workbench contenant des commandes d'insertion, mais je dois le modifier manuellement pour le faire fonctionner. Les informations d'explication sont-elles stockées quelque part afin que je puisse écrire des requêtes pour le faire automatiquement? Je ne trouve pas cela dans les informations_schema ou Performance_schema.

6
kcd

Si vous courez sur Linux OS Vous pouvez l'enregistrer dans un fichier.

Exemple:

User='root'
Pass='text'
Host='10.0.0.223' (If it's remote)

Sur la ligne de commande Run:

mysql -u $User -p$Pass --Host=$Host -e "EXPLAIN SELECT * FROM mysql.user LIMIT 0,2" | tee -a test.txt

mysql -e exécutera la requête sur la ligne de commande.

tee -a va lire à partir de l'entrée standard et écrire au fichier test.txt

Et vous obtiendrez:

enter image description here

Vous pouvez utiliser Perl pour remplacer les lignes de décès à n'importe quel délimiteur que vous voulez (j'ai utilisé une virgule dans cet exemple).

Perl -wnlpi -e 's/\s+/,/g;' text.txt

Exemple:

enter image description here

J'espère que cette aide.

2
oNare