Généralement, selon les indexes créés et le volume des données, une requête unique mais complexe est bien plus rapide que plusieurs petites requêtes, surtout si ces dernières aboutissent sur des jointures à la main (avec des while dans tous les sens)
En effet, dans la plupart des cas, c'est le calcul du plan d'éxécution qui est le plus long lors de l'éxécution d'une requête.
Donc le calculer une seule fois pour une requête complexe est très souvent bien plus rapide que de le calculer X fois pour X requêtes simples.
Cela aboutis aussi généralement à un traffic moindre entre le serveur Web et le serveur de Base de données, ce qui peut être très important, notamment dans le cas d'une architecture 2/3.