Une requête SQL arrive dans un bar et voit deux tables. Elle s'approche des tables et leur demande « Puis-je me joindre à vous ? »— Source : inconnu
L'opération de jointure transforme un modèle normalisé en une forme dénormalisée qui convient à un traitement spécifique. Joindre plusieurs relations est une opération très sensible aux latences d'accès des disques car cette opération combine des fragments de données réparties sur le disque. Une bonne indexation est de nouveau la meilleure solution pour réduire les temps de réponse. Le bon index dépend principalement de l'algorithme choisi, parmi trois, pour effectuer la jointure.
Cependant, il existe un comportement commun à tous les algorithmes de jointure : ils traitent seulement deux tables à la fois. Une requête SQL comprenant plus de tables nécessite plusieurs étapes : tout d'abord construire un résultat intermédiaire provenant de la jointure de deux tables, puis joindre ce résultat avec la table suivante, et ainsi de suite.
Même si l'ordre de jointure n'a aucun impact sur le résultat final, il affecte les performances. Du coup, l'optimiseur va évaluer toutes les permutations possibles dans l'ordre de jointure et sélectionner le meilleur. L'optimisation d'une requête complexe peut de ce fait devenir un souci pour les performances. Plus il y a de tables à joindre et plus il existe de variantes de plans d'exécution. En langage mathématique : n! (croissance factorielle). Néanmoins, cela n'est pas un problème lors de l'utilisation de paramètres liés.
Important
Plus une requête est complexe, plus il est important d'utiliser les paramètres liés.
Ne pas utiliser les paramètres liés revient à recompiler un programme à chaque utilisation.