- 1 1. Introduction
- 2 2. Bases des tables temporaires
- 3 3. How to Create Temporary Tables
- 4 4. How to Use Temporary Tables
- 5 5. Managing and Dropping Temporary Tables
- 6 6. Cas d’utilisation pratiques des tables temporaires
- 7 7. Alternatives and Limitations of Temporary Tables
- 7.1 Main limitations of temporary tables
- 7.2 Alternatives aux tables temporaires
- 7.3 Résumé
- 8 8. FAQ
- 8.1 1. Les tables temporaires peuvent-elles être référencées depuis d’autres sessions ?
- 8.2 2. Quels privilèges sont requis pour créer des tables temporaires ?
- 8.3 3. Les tables temporaires affectent-elles l’utilisation du disque ?
- 8.4 4. Quelle est la différence entre une table temporaire et une table temporaire interne ?
- 8.5 5. Les tables temporaires peuvent-elles être partagées entre threads ?
- 8.6 6. Les tables temporaires peuvent-elles réduire les performances ?
- 8.7 7. Comment améliorer les performances des tables temporaires ?
- 8.8 Résumé
1. Introduction
Lorsque vous travaillez avec MySQL, une « table temporaire » est un moyen pratique de stocker et de traiter des données de façon temporaire. En utilisant des tables temporaires, vous pouvez retenir temporairement des données afin de réduire la charge des requêtes complexes et d’améliorer l’efficacité du traitement par lots.
Dans cet article, nous expliquerons ce que sont les tables temporaires MySQL, ainsi que leurs cas d’utilisation et leurs avantages en détail.
Qu’est‑ce qu’une table temporaire ?
Une table temporaire est une table qui n’est valide que pendant une session.
Contrairement aux tables ordinaires, elle n’est pas stockée de façon permanente dans la base de données, et elle est automatiquement supprimée à la fin de la session.
Les caractéristiques principales des tables temporaires sont les suivantes :
- Elles existent par session (non accessibles depuis d’autres connexions)
- Elles sont automatiquement supprimées à la fin de la session
- Elles peuvent être utilisées sans interférer même si une table ordinaire du même nom existe
- Elles sont souvent employées pour améliorer les performances
Les tables temporaires sont bien adaptées à l’analyse de données et au traitement temporaire, et elles sont couramment utilisées comme support pour le traitement par lots et les tâches d’agrégation.
Avantages de l’utilisation des tables temporaires
L’utilisation de tables temporaires peut rendre le traitement des données plus efficace. Voici trois avantages majeurs.
1. Améliorer les performances des requêtes
Lors du traitement de gros volumes de données, l’utilisation de multiples JOIN et sous‑requêtes peut rendre le traitement complexe et augmenter la charge de la base de données. Avec les tables temporaires, vous pouvez filtrer et stocker les données à l’avance, ce qui accélère l’exécution des requêtes.
2. Idéal pour le stockage temporaire de données
Dans le traitement par lots ou la transformation de données, il peut être nécessaire de stocker temporairement des données et d’effectuer les opérations requises. Les tables temporaires vous permettent de stocker les données temporairement et d’activer un traitement rapide en mémoire.
3. Protéger les données existantes
Manipuler directement les données de production est risqué. En utilisant des tables temporaires, vous pouvez traiter les données sans modifier les données de production et réduire le risque d’erreurs.
Résumé
Les tables temporaires MySQL sont un outil pratique pour le stockage et le traitement temporaire des données.
- Elles sont limitées à la session et supprimées à la fin de celle‑ci
- Elles sont utiles pour améliorer les performances et le traitement par lots
- Elles permettent des opérations sûres sans modifier les données de production
2. Bases des tables temporaires
Les tables temporaires MySQL sont utilisées pour stocker des données temporairement, contrairement aux tables ordinaires. Dans cette section, nous expliquerons en détail les concepts de base des tables temporaires, y compris les « différences avec les tables ordinaires » et les « différences avec les tables temporaires internes ».
Différences entre les tables temporaires et les tables ordinaires
Les tables temporaires et les tables ordinaires diffèrent sensiblement en rétention des données et comportement d’accès. Le tableau ci‑dessous résume les principales différences.
| Item | Temporary Table | Regular Table |
|---|---|---|
| Lifetime | Dropped when the session ends | Exists until explicitly dropped |
| Access | Available only within the session (not visible to other connections) | Shareable across all sessions |
| Conflicts | Can be used even if a regular table with the same name exists | Cannot create another table with the same name |
| Storage location | MEMORY (default) or an InnoDB temporary area | Stored in the database storage |
| Persistence | None (dropped when the session ends) | Yes (retained by the database) |
Points clés
- Les tables temporaires sont isolées par session et ne sont pas visibles par les autres utilisateurs.
- Vous pouvez les créer sans erreur même si une table ordinaire du même nom existe.
- Elles sont créées explicitement avec
CREATE TEMPORARY TABLEet sont automatiquement supprimées à la fin de la session.
Différences entre les tables temporaires et les tables temporaires internes
En plus des tables temporaires créées par l’utilisateur, MySQL crée également des tables temporaires internes automatiquement. Elles peuvent sembler similaires, mais leurs objectifs et leur gestion diffèrent.
| Item | Temporary Table | Internal Temporary Table |
|---|---|---|
| Creation method | Explicitly created using CREATE TEMPORARY TABLE | Automatically created by MySQL |
| Purpose | Created by the user for specific processing | Created by MySQL to process complex queries (GROUP BY, ORDER BY) |
| Scope | Available only within the session | Valid only while the query is executing |
| Deletion | Dropped when the session ends | Automatically dropped after the query completes |
Qu’est‑ce qu’une table temporaire interne ?
- MySQL peut créer automatiquement des tables temporaires internes pour optimiser certaines requêtes (telles que
GROUP BY,ORDER BY,DISTINCT). - Les utilisateurs finaux ne peuvent pas les gérer directement (vous ne pouvez pas les créer explicitement comme
CREATE TEMPORARY TABLE). - Elles sont créées au besoin pendant l’exécution de la requête et sont automatiquement supprimées à la fin de la requête.
Exemple pouvant déclencher des tables temporaires internes
Lorsque vous exécutez une requête comme celle‑ci-dessous, MySQL peut créer une table temporaire interne pour la traiter.
SELECT category, COUNT(*)
FROM products
GROUP BY category
ORDER BY COUNT(*) DESC;
Dans ce cas, MySQL peut créer une table temporaire interne pour stocker temporairement les résultats du GROUP BY,
et l’utiliser ensuite pour calculer le résultat final.
Summary
- Une table temporaire est une table temporaire créée par l’utilisateur qui est automatiquement supprimée à la fin de la session.
- Contrairement aux tables normales, elle ne peut pas être accédée depuis d’autres sessions.
- Une table temporaire interne est créée et supprimée automatiquement par MySQL, et les utilisateurs ne peuvent pas la contrôler directement.

3. How to Create Temporary Tables
Vous pouvez créer une table temporaire MySQL en utilisant l’instruction CREATE TEMPORARY TABLE. Dans cette section, nous expliquons tout, de la création de base à la création d’une table à partir d’une table existante.
Basic way to create a temporary table
Dans MySQL, vous utilisez CREATE TEMPORARY TABLE pour créer une table temporaire.
Basic syntax
CREATE TEMPORARY TABLE table_name (
column_name data_type constraints,
column_name data_type constraints,
...
);
Exemple de code
Le SQL suivant crée une table temporaire nommée users_temp avec trois colonnes : id (entier), name (chaîne), et email (chaîne).
CREATE TEMPORARY TABLE users_temp (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
Comme cette table est automatiquement supprimée à la fin de la session, elle n’affecte pas la base de données persistante.
Create a temporary table based on an existing table
Au lieu de créer une table temporaire à partir de zéro, vous pouvez également copier la structure d’une table existante pour en créer une.
Utilisation de CREATE TEMPORARY TABLE ... SELECT
Dans MySQL, vous pouvez créer une table temporaire à partir du résultat d’une instruction SELECT.
Basic syntax
CREATE TEMPORARY TABLE temp_table_name
SELECT * FROM existing_table_name;
Exemple de code
Par exemple, pour copier la structure de données de la table users et créer une nouvelle table temporaire users_temp, vous pouvez écrire :
CREATE TEMPORARY TABLE users_temp
SELECT * FROM users;
Avec cette méthode, la structure des colonnes de users est transférée à users_temp, mais les contraintes telles que PRIMARY KEY et INDEX ne sont pas copiées.
Si vous souhaitez copier uniquement la structure de la table sans inclure les données, ajoutez WHERE 1=0.
CREATE TEMPORARY TABLE users_temp
SELECT * FROM users WHERE 1=0;
Avec ce SQL, les définitions de colonnes de users sont copiées, mais aucune donnée n’est incluse.
Notes when creating temporary tables
1. Les tables temporaires sont limitées à la session
- Une table temporaire n’est valide que dans la session où elle a été créée.
- Elle ne peut pas être accédée depuis d’autres connexions ou par d’autres utilisateurs.
2. Vous pouvez la créer même si une table normale du même nom existe
- Par exemple, même s’il existe une table normale nommée
usersdans la base de données, vous pouvez créer une table temporaire nomméeusers. - Dans cette session, la table temporaire a la priorité et la table normale devient masquée.
3. Impact du moteur de stockage
- Par défaut, les tables temporaires utilisent le moteur
MEMORY, mais si la taille des données est importante, elles peuvent être stockées dans une zone temporaireInnoDB. - Si vous souhaitez spécifier explicitement le moteur
MEMORY, écrivez-le ainsi :CREATE TEMPORARY TABLE users_temp ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) ) ENGINE=MEMORY; - Le moteur
MEMORYest rapide mais possède des limites de taille de données. Pour de grands ensembles de données, envisagez d’utiliserInnoDB.
Summary
- Créez des tables temporaires en utilisant
CREATE TEMPORARY TABLE. - Vous pouvez également en créer une en copiant une table existante (
SELECT * FROM). - Le moteur
MEMORYpeut être rapide, maisInnoDBest souvent meilleur pour les grands ensembles de données. - Les tables temporaires sont gérées par session et sont automatiquement supprimées à la fin de la session .
4. How to Use Temporary Tables
MySQL temporary tables can be operated like regular tables, including INSERT, UPDATE, DELETE, and SELECT. In this section, we explain each operation in detail.
Inserting data
To add data to a temporary table, use the regular INSERT INTO statement.
Basic syntax
INSERT INTO temp_table_name (column1, column2, ...)
VALUES (value1, value2, ...);
Sample code
The following SQL inserts data into a temporary table named users_temp.
INSERT INTO users_temp (id, name, email)
VALUES (1, 'Taro Yamada', 'taro@example.com');
You can also copy and insert data from an existing table.
INSERT INTO users_temp (id, name, email)
SELECT id, name, email FROM users WHERE age >= 18;
This SQL inserts data for users aged 18 or older from the users table into the temporary table.
Updating data
To modify data in a temporary table, use the regular UPDATE statement.
Basic syntax
UPDATE temp_table_name
SET column_name = new_value
WHERE condition;
Sample code
For example, to change the name of the user with id=1 in the users_temp table:
UPDATE users_temp
SET name = 'Ichiro Sato'
WHERE id = 1;
Deleting data
To delete unnecessary data, use the DELETE statement.
Basic syntax
DELETE FROM temp_table_name WHERE condition;
Sample code
For example, to delete the row with id=1 from users_temp:
DELETE FROM users_temp WHERE id = 1;
To delete all data in the table, omit the WHERE clause.
DELETE FROM users_temp;
Note that using DELETE does not drop the table itself; it deletes only the data.
Selecting data
To retrieve data stored in a temporary table, use the SELECT statement.
Basic syntax
SELECT column_name FROM temp_table_name WHERE condition;
Sample code
For example, to retrieve all data from users_temp:
SELECT * FROM users_temp;
To retrieve data matching a specific condition, use the WHERE clause.
SELECT * FROM users_temp WHERE email LIKE '%@example.com';
This SQL retrieves only rows where the email address contains @example.com.
Notes when using temporary tables
1. Data is removed when the session ends
- Temporary tables are managed per session, and their data is also removed when the session ends.
- For long-running processing, it is recommended to back up data periodically.
2. Creating a temporary table with the same name causes an error
- If you try to create a temporary table with the same name using
CREATE TEMPORARY TABLE, an error occurs. - As an error avoidance approach, run
DROP TEMPORARY TABLE IF EXISTSbeforehand.DROP TEMPORARY TABLE IF EXISTS users_temp; CREATE TEMPORARY TABLE users_temp (...);
3. Storage engine constraints
- Temporary tables default to the
MEMORYengine, but large datasets may be automatically stored in anInnoDBtemporary area. - For large datasets, using an
InnoDBtemporary table is recommended.
Summary
- Temporary tables can perform INSERT, UPDATE, DELETE, and SELECT just like regular tables.
- When the session ends, data in the temporary table is also automatically removed.
- Running
DROP TEMPORARY TABLE IF EXISTSbeforehand helps avoid name-conflict errors. - For large datasets, using an
InnoDBtemporary table is recommended.
5. Managing and Dropping Temporary Tables
MySQL temporary tables are automatically dropped when the session ends. However, in some cases you may need to drop them explicitly. In this section, we explain how to manage and drop temporary tables.
How to drop a temporary table
To explicitly drop a temporary table, use the DROP TEMPORARY TABLE statement.
Basic syntax
DROP TEMPORARY TABLE table_name;
Sample code
Par exemple, pour supprimer une table temporaire nommée users_temp, exécutez :
DROP TEMPORARY TABLE users_temp;
Après avoir exécuté ce SQL, la table users_temp est supprimée et ne peut plus être utilisée dans la session.
Suppression automatique à la fin de la session
Une table temporaire est automatiquement supprimée lorsque la session se termine.
Comment fonctionne la suppression automatique
- Créez une table temporaire avec
CREATE TEMPORARY TABLE - Manipulez ses données tant que la session est active
- Lorsque la session (connexion) est fermée, la table temporaire est automatiquement supprimée
Cependant, faites attention aux cas suivants :
- Lorsque les sessions restent ouvertes longtemps → Les tables temporaires inutiles peuvent consommer de la mémoire, il est donc recommandé d’exécuter
DROP TEMPORARY TABLEau besoin. - Lors du traitement de grandes quantités de données → Pour éviter la pression sur le stockage, il est important de supprimer les tables de manière appropriée.
Utilisation de DROP TEMPORARY TABLE IF EXISTS
Pour éviter les erreurs lors de la suppression d’une table qui pourrait ne pas exister, vous pouvez utiliser IF EXISTS.
Syntaxe de base
DROP TEMPORARY TABLE IF EXISTS table_name;
Exemple de code
DROP TEMPORARY TABLE IF EXISTS users_temp;
Ce SQL supprime users_temp si elle existe ; si elle n’existe pas, aucune erreur ne sera levée.
Erreurs courantes et solutions
Erreur 1 : « Table non trouvée »
Quand cela se produit :
- Lorsque vous essayez de supprimer une table qui n’existe pas avec
DROP TEMPORARY TABLE - Parce que les tables temporaires sont limitées à la session, vous ne pouvez pas les supprimer depuis une autre session
Solution :
- Ajoutez
IF EXISTSpour éviter l’erreurDROP TEMPORARY TABLE IF EXISTS users_temp;
- Supprimez‑la dans la session correcte
Erreur 2 : « Table déjà existante »
Quand cela se produit :
- Lorsque vous essayez de créer une table temporaire avec un nom déjà existant
Solution :
- Exécutez
DROP TEMPORARY TABLE IF EXISTSau préalableDROP TEMPORARY TABLE IF EXISTS users_temp; CREATE TEMPORARY TABLE users_temp ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) );
Bonnes pratiques pour gérer les tables temporaires
- Supprimez‑les explicitement lorsque vous n’en avez plus besoin
- Exécutez
DROP TEMPORARY TABLEau besoin pour libérer les tables inutiles.
- Utilisez
IF EXISTSpour éviter les erreurs
DROP TEMPORARY TABLE IF EXISTSempêche les erreurs lors de la suppression d’une table qui n’existe pas.
- Soyez attentif à la gestion des sessions
- Les sessions de longue durée peuvent faire consommer de la mémoire aux tables temporaires, il faut donc les supprimer de façon appropriée.
- Comprendre l’impact du moteur de stockage
- Le moteur
MEMORYest rapide mais possède des limites de taille de données. - Si vous utilisez
InnoDB, vous devez prendre en compte l’utilisation de l’espace disque.
Résumé
- Vous pouvez supprimer explicitement les tables temporaires avec
DROP TEMPORARY TABLE. - Elles sont automatiquement supprimées à la fin de la session, mais pour les sessions de longue durée, un nettoyage manuel est recommandé.
DROP TEMPORARY TABLE IF EXISTSaide à prévenir les erreurs lors de la suppression.- Il est utile de savoir comment gérer les erreurs « Table non trouvée » et « Table déjà existante ».
6. Cas d’utilisation pratiques des tables temporaires
Les tables temporaires MySQL sont utilisées pour rendre le stockage et le traitement de données temporaires plus efficaces. Dans cette section, nous présentons des scénarios courants où les tables temporaires sont utiles et expliquons les détails d’implémentation.
1. Utilisation comme table intermédiaire pour l’agrégation
Dans l’analyse de données et la génération de rapports, le traitement direct de grands ensembles de données peut ralentir l’exécution des requêtes. En utilisant une table temporaire, vous pouvez d’abord organiser les données puis les traiter, ce qui améliore les performances.
Scénario
- La table
salescontient un an de données de ventes. - Vous souhaitez calculer les ventes totales mensuelles et effectuer une analyse supplémentaire.
Exemple d’implémentation
CREATE TEMPORARY TABLE monthly_sales (
month_year DATE,
total_sales DECIMAL(10,2)
);
.
INSERT INTO monthly_sales (month_year, total_sales)
SELECT DATE_FORMAT(sale_date, '%Y-%m-01') AS month_year, SUM(amount)
FROM sales
GROUP BY month_year;
SELECT * FROM monthly_sales;
2. Keeping temporary data for batch processing
Temporary tables are also useful for batch processing (bulk operations). For example, you can filter data by certain conditions and store only the target data in a temporary table to operate efficiently.
Scenario
- From the
userstable, you want to email only users who have logged in within the last year . - You store the target data in a temporary table first, then process it sequentially.
Example implementation
CREATE TEMPORARY TABLE active_users (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(255)
);
INSERT INTO active_users
SELECT id, name, email FROM users WHERE last_login >= NOW() - INTERVAL 1 YEAR;
SELECT * FROM active_users;
3. Simplifying complex queries
Running complex queries directly can reduce performance and hurt readability. By using temporary tables, you can reduce subqueries and keep SQL simpler.
Scenario
- You want to get the top 10 best-selling products from the
orderstable. - You want to avoid using subqueries by leveraging a temporary table.
Example implementation
CREATE TEMPORARY TABLE top_products AS
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;
SELECT * FROM top_products;
4. Temporary operations without needing rollback
Temporary tables are managed per session and are not affected by transactions. This makes them suitable for managing temporary data where rollback is not desired.
Scenario
- During a transaction, you want to keep temporary calculation results .
- But you want to avoid temporary data being rolled back on errors.
Example implementation
START TRANSACTION;
CREATE TEMPORARY TABLE temp_results (
user_id INT,
score INT
);
INSERT INTO temp_results
SELECT user_id, SUM(points) FROM game_scores GROUP BY user_id;
-- Valider la transaction
COMMIT;
SELECT * FROM temp_results;
Summary
- Temporary tables can be used for aggregation, batch processing, and simplifying queries across many scenarios.
- Using them as an intermediate table can improve performance and help organize data.
- For batch processing , pre-extracting only target data helps avoid unnecessary work.
- For simplifying complex queries , reducing subqueries improves readability.
- Because they are not affected by transactions , they can be used for temporary data where rollback is not needed.
7. Alternatives and Limitations of Temporary Tables
MySQL temporary tables are useful, but they have some limitations. In some cases, using alternatives such as views or subqueries can provide more efficient data processing. In this section, we explain the main limitations of temporary tables and alternative approaches to work around them.
Main limitations of temporary tables
Temporary tables have several limitations that regular tables do not. Understanding these helps you choose appropriate use cases.
1. Session-scoped
- A temporary table is valid only within the session where it was created, and cannot be accessed by other connections or users .
- Even if a regular table with the same name exists, the temporary table takes precedence within the session (the regular table is not accessible).
2. The schema is not retained
- Regular tables can be inspected with
SHOW CREATE TABLE, but a temporary table disappears when the session ends , so its schema is not retained.
3. Index limitations
- Si vous ne spécifiez pas
PRIMARY KEYouINDEXdansCREATE TEMPORARY TABLE, ils ne sont pas créés automatiquement. - Si vous avez besoin d’index sur une table temporaire, vous devez les créer manuellement.
4. Le moteur de stockage par défaut est MEMORY
- Avec le moteur
MEMORY, de grandes tailles de données peuvent entraîner un échange vers le disque et réduire les performances. - Si vous spécifiez
InnoDB, il peut gérer des données plus volumineuses, mais l’utilisation du disque augmente.
5. Non affecté par les transactions
- Les tables temporaires ne sont pas affectées par
ROLLBACK. - Par conséquent, elles ne conviennent pas aux traitements qui nécessitent une cohérence transactionnelle stricte.
Alternatives aux tables temporaires
Pour éviter ces limitations, vous pouvez utiliser des vues ou des sous‑requêtes à la place des tables temporaires pour une gestion des données plus flexible.
1. Utiliser une vue
Une vue peut être utilisée de manière similaire aux tables temporaires pour référencer des données temporaires. Une vue agit comme une table virtuelle et ne nécessite pas de stockage de données temporaires, ce qui aide à éviter les contraintes de stockage.
Créer une vue
CREATE VIEW active_users AS
SELECT id, name, email FROM users WHERE last_login >= NOW() - INTERVAL 1 YEAR;
Utiliser la vue
SELECT * FROM active_users;
Avantages d’utiliser une vue
✅ Pas d’utilisation de stockage (les données sont référencées directement, pas besoin de les stocker temporairement)
✅ Pas dépendant de la session (disponible pour d’autres utilisateurs et connexions)
✅ Le schéma peut être conservé (vous pouvez revoir la définition avec SHOW CREATE VIEW)
Inconvénients d’utiliser une vue
❌ Difficile à mettre à jour (les INSERT ou UPDATE directs sur une vue sont restreints)
❌ Les performances peuvent se dégrader pour de grands ensembles de données
2. Utiliser une sous‑requête
Vous pouvez également utiliser une sous‑requête pour traiter des données temporaires sans créer de table temporaire.
Utiliser une table temporaire
CREATE TEMPORARY TABLE top_products AS
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;
SELECT * FROM top_products;
Utiliser une sous‑requête
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;
Avantages d’utiliser une sous‑requête
✅ Meilleures performances car vous ne créez pas de table temporaire
✅ Pas d’utilisation de stockage
✅ Pas dépendant de la session et peut être exécuté à tout moment
Inconvénients d’utiliser une sous‑requête
❌ La lisibilité peut en souffrir pour des requêtes complexes
❌ Difficile de réutiliser les données (vous pourriez avoir besoin de référencer les mêmes données à plusieurs reprises)
3. Utiliser un CTE (clause WITH)
Dans MySQL 8.0 et versions ultérieures, vous pouvez utiliser un CTE (Common Table Expression) pour gérer les données temporairement sans créer de table temporaire.
Exemple de CTE
WITH top_products AS (
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10
)
SELECT * FROM top_products;
Avantages d’utiliser un CTE
✅ Améliore la lisibilité (souvent plus facile à lire que les sous‑requêtes)
✅ Peut optimiser les performances (traitement de type temporaire sans créer de table temporaire)
Inconvénients d’utiliser un CTE
❌ Non disponible dans MySQL 5.x (supporté uniquement dans MySQL 8.0 et versions ultérieures)
Résumé
| Method | Pros | Cons |
|---|---|---|
| Temporary table | Good for session-scoped data processing | Consumes storage and disappears when the session ends |
| View | No storage usage, not session-dependent | Hard to update, possible performance degradation |
| Subquery | No storage usage, simple | Hard to reuse, reduced readability |
| CTE (WITH) | Better readability, performance optimization | Available only in MySQL 8.0+ |
8. FAQ
Voici les questions fréquemment posées sur les tables temporaires MySQL. Nous espérons que cela aidera à clarifier leur comportement et leurs limitations.
1. Les tables temporaires peuvent-elles être référencées depuis d’autres sessions ?
Non, elles ne le peuvent pas.
Une table temporaire est disponible uniquement dans la session où elle a été créée. Les autres sessions ne peuvent pas y accéder. Même si un autre utilisateur crée une table temporaire avec le même nom, chaque session la considère comme une table indépendante.
2. Quels privilèges sont requis pour créer des tables temporaires ?
Pour créer des tables temporaires, vous avez besoin du privilège CREATE TEMPORARY TABLES sur la base de données.
Pour accorder ce privilège à un utilisateur, exécutez le SQL suivant :
GRANT CREATE TEMPORARY TABLES ON database_name.* TO 'user_name'@'host';
Vous pouvez également vérifier les privilèges actuels en utilisant SHOW GRANTS.
SHOW GRANTS FOR 'user_name'@'host';
3. Les tables temporaires affectent-elles l’utilisation du disque ?
Oui, elles le peuvent.
Par défaut, les tables temporaires MySQL utilisent le moteur MEMORY, mais lorsque la taille des données dépasse un certain seuil, elles sont stockées dans une zone temporaire InnoDB.
Lors du traitement de grands ensembles de données, les tables temporaires peuvent consommer de l’espace disque. Par conséquent, il est recommandé de les supprimer explicitement lorsqu’elles ne sont plus nécessaires.
DROP TEMPORARY TABLE IF EXISTS table_name;
Pour minimiser l’impact sur le disque, si vous prévoyez de gros volumes de données, envisagez de créer la table temporaire avec InnoDB plutôt qu’avec MEMORY.
CREATE TEMPORARY TABLE table_name (
column1 data_type,
column2 data_type
) ENGINE=InnoDB;
4. Quelle est la différence entre une table temporaire et une table temporaire interne ?
| Item | Temporary table | Internal temporary table |
|---|---|---|
| Creation method | Created by the user with CREATE TEMPORARY TABLE | Automatically created by MySQL during processing such as GROUP BY |
| Scope | Only within the creating session | Only during query execution |
| Deletion | Explicitly dropped with DROP TEMPORARY TABLE | Automatically dropped when the query completes |
5. Les tables temporaires peuvent-elles être partagées entre threads ?
Non, elles ne le peuvent pas.
Une table temporaire est valide uniquement dans le thread (session) où elle a été créée, et elle ne peut pas être accédée depuis d’autres threads ou processus.
Si vous devez partager des données entre sessions/threads, vous devez créer une table normale à la place.
CREATE TABLE shared_temp_table (
id INT PRIMARY KEY,
data VARCHAR(255)
);
6. Les tables temporaires peuvent-elles réduire les performances ?
Oui, dans certains cas.
En particulier, soyez prudent dans les situations suivantes :
- Lorsque le volume de données est trop important
- Le moteur
MEMORYa des limites de taille ; au-delà, les données peuvent basculer versInnoDB, ce qui peut réduire les performances. - Atténuation : Si vous prévoyez de dépasser les limites de
MEMORY, créez la table avecInnoDBdès le départ. - Lorsque les index appropriés ne sont pas définis
- Les tables créées avec
CREATE TEMPORARY TABLE ... SELECTne copient pas les index, ce qui peut ralentir les recherches. - Atténuation : Ajoutez des index au besoin en utilisant
ALTER TABLE.ALTER TABLE temp_table_name ADD INDEX (column_name);
7. Comment améliorer les performances des tables temporaires ?
Pour améliorer les performances des tables temporaires, les approches suivantes sont efficaces :
✅ Utilisez le moteur MEMORY (rapide pour les petits ensembles de données)
CREATE TEMPORARY TABLE table_name (
id INT PRIMARY KEY,
name VARCHAR(50)
) ENGINE=MEMORY;
✅ Sélectionnez uniquement les colonnes requises (omettez les colonnes inutiles)
CREATE TEMPORARY TABLE users_temp AS
SELECT id, name FROM users;
✅ Ajoutez des index appropriés (accélèrent les recherches)
ALTER TABLE users_temp ADD INDEX (name);
✅ Supprimez-la dès que vous n’en avez plus besoin (libère de la mémoire)
DROP TEMPORARY TABLE IF EXISTS users_temp;
Résumé
- Les tables temporaires ne peuvent pas être référencées depuis d’autres sessions ou threads
- Vous avez besoin du privilège
CREATE TEMPORARY TABLESpour les créer - Si les données deviennent trop volumineuses, MySQL peut passer de
MEMORYàInnoDB, ce qui peut réduire les performances - Ajouter des index appropriés peut accélérer les requêtes
- Supprimer les tables temporaires avec
DROP TEMPORARY TABLEest recommandé lorsqu’elles ne sont plus nécessaires
Ceci complète une explication détaillée des tables temporaires MySQL, des concepts de base aux cas d’utilisation, limitations, alternatives et FAQ.
En utilisant les tables temporaires de manière appropriée, vous pouvez améliorer considérablement l’efficacité du traitement des données.


