Lors de l'utilisation de tables temporaires dans MySQL : 1. Lors de l'utilisation de l'algorithme TEMPTABLE ou de la vue dans la requête UNION ; 2. Lors de l'utilisation de la requête DISTINCT et de l'ajout de ORDER BY ; 3. Lors de l'utilisation de l'option "SQL_SMALL_RESULT" dans SQL ; Lors de l'utilisation de la sous-requête dans FROM, etc.
L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.
MySQL créera des tables temporaires dans les situations suivantes :
1 requête UNION
2 Utilisez l'algorithme TEMPTABLE ou la vue dans la requête UNION ; de ORDER BY et GROUP BY sont différents ;
4. Dans la connexion à la table, la colonne de ORDER BY n'est pas dans la table pilote
5 Lorsque la requête DISTINCT est ajoutée avec ORDER BY ; L'option SQL_SMALL_RESULT est utilisée ;
7. Sous-requête dans FROM ;
8. Sous-requête ou table créée lors de la semi-jointure ;
EXPLAIN Vérifiez la colonne Extra du résultat du plan d'exécution. Si elle contient Using Temporary, cela signifie qu'elle sera temporaire. des tableaux sont utilisés.
Bien sûr, si la quantité de données qui doit être stockée dans la table temporaire dépasse la limite supérieure (tmp-table-size ou max-heap-table-size, selon la valeur la plus élevée), alors vous devez générer un disque -table temporaire basée.
Dans les situations suivantes, une table temporaire de disque sera créée :1. La table de données contient des colonnes BLOB/TEXT 2 Il existe des colonnes de type caractère avec plus de 512 caractères dans GROUP BY ou DSTINCT ; colonnes. (Ou les colonnes de type binaire dépassant 512 octets, avant la version 5.6.15, il importait uniquement qu'elles dépassent 512 octets
3 Dans les requêtes SELECT, UNION et UNION ALL, il existe des colonnes d'une longueur maximale supérieure à 512 (). pour les types chaîne) est de 512 caractères, 512 octets pour les types binaires) ;
4. Exécutez des commandes SQL telles que SHOW COLUMNS/FIELDS, DESCRIBE, etc., car leurs résultats d'exécution utilisent le type de colonne BLOB.
À partir de la version 5.7.5, il existe une nouvelle option système internal_tmp_disk_storage_engine qui peut définir le type de moteur de la table temporaire du disque comme InnoDB. Avant cela, seul MyISAM pouvait être utilisé. La nouvelle option système default_tmp_storage_engine ajoutée après la version 5.6.3 contrôle le type de moteur de la table temporaire créée par CREATE TEMPORARY TABLE Dans le passé, la valeur par défaut était MEMORY.
Voir l'exemple ci-dessous :
Apprentissage recommandé :Tutoriel vidéo mysql
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!