Clause UNION ALL de MySQL
La clause `UNION ALL` de MySQL est utilisée pour combiner les résultats de deux ou plusieurs instructions `SELECT`. Contrairement à `UNION`, il inclut les lignes dupliquées dans le résultat final.
Utilisation
La clause `UNION ALL` est utilisée lorsque vous devez combiner les résultats de plusieurs requêtes sans supprimer les entrées en double. Il est particulièrement utile pour agréger des ensembles de données où les doublons sont significatifs et doivent être conservés.
SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2;
Dans cette syntaxe, `UNION ALL` fusionne les résultats des deux instructions `SELECT`, y compris les lignes dupliquées.
Exemples
1. Base UNION ALL
SELECT name FROM students
UNION ALL
SELECT name FROM alumni;
Cet exemple combine les noms des tableaux `students` et `alumni`, y compris les doublons si des noms apparaissent dans les deux tableaux.
2. UNION ALL avec des colonnes différentes
SELECT id, name FROM employees
UNION ALL
SELECT employee_id, full_name FROM contractors;
Ici, la fonction `UNION ALL` fusionne les colonnes `id` et `name` de `employees` avec `employee_id` et `full_name` de `contractors`. Les deux requêtes doivent comporter le même nombre de colonnes dans le même ordre et leurs types de données doivent être compatibles pour éviter les erreurs.
3. Utilisation de UNION ALL avec des conditions
SELECT product_id, description FROM products WHERE category = 'Electronics'
UNION ALL
SELECT product_id, description FROM discontinued_products WHERE category = 'Electronics';
Cet exemple combine les produits et les fins de série de la catégorie "Électronique", en conservant tous les doublons.
4. Utilisation de UNION ALL avec ORDER BY
SELECT id, name FROM employees
UNION ALL
SELECT employee_id, full_name FROM contractors
ORDER BY name;
Cet exemple montre comment appliquer le paramètre `ORDER BY` à l'ensemble des résultats finaux pour s'assurer que les résultats combinés sont triés par nom.
Conseils et bonnes pratiques
- Assurez-vous de la compatibilité des colonnes. Toutes les instructions `SELECT` doivent avoir le même nombre de colonnes avec des types de données compatibles pour éviter les erreurs.
- Préservez les doublons significatifs. Utilisez `UNION ALL` lorsque les lignes dupliquées sont utiles à vos besoins d'analyse ou de reporting.
- Optimiser les performances des requêtes. Sachez que l'utilisation de `UNION ALL` avec de grands ensembles de données peut avoir un impact sur les performances ; envisagez d'indexer les colonnes critiques. Utilisez l'instruction `EXPLAIN` pour analyser le plan de requête afin de trouver des opportunités d'optimisation.
- Utilisez un ordre explicite. Si l'ordre est important, appliquez `ORDER BY` à l'ensemble de résultats final, et non aux requêtes individuelles au sein de `UNION ALL`.
- Gestion des erreurs. Assurez-vous que les colonnes de toutes les instructions `SELECT` ont des nombres correspondants et des types de données compatibles afin d'éviter les erreurs d'exécution.