Pour SQL Server 2005, je vous recommande d'utiliser des variables de table et de créer partiellement les données au fur et à mesure.
Pour ce faire, créez une variable de table qui représente votre jeu de résultats final que vous souhaitez envoyer à l'utilisateur.
Ensuite, trouvez votre table principale (disons la table des commandes dans votre exemple ci-dessus) et extrayez ces données, ainsi qu'un peu de données supplémentaires qui ne sont qu'à une jointure (nom du client, nom du produit). Vous pouvez faire un SELECT INTO pour mettre cela directement dans votre variable de table.
À partir de là, parcourez la table et pour chaque ligne, effectuez un ensemble de petites requêtes SELECT qui récupèrent toutes les données supplémentaires dont vous avez besoin pour votre ensemble de résultats. Insérez-les dans chaque colonne au fur et à mesure.
Une fois terminé, vous pouvez alors faire un simple SELECT * à partir de votre variable de table et renvoyer cet ensemble de résultats à l'utilisateur.
Je n'ai pas de chiffres concrets pour cela, mais il y a eu trois cas distincts sur lesquels j'ai travaillé jusqu'à présent où ces petites requêtes ont en fait fonctionné plus rapidement que de faire une requête de sélection massive avec un tas de jointures.< /p>