Je voudrais revenir sur un article de Rudi éclairant pour moi :
http://rudi.developpez.com/sqlserver/tutoriel/optimisation/
Dans cet article, il écrit « Une erreur commune, qui peut affecter fortement les performances, est d’écrire du code SQL avec la même approche intellectuelle que pour l’écriture de code procédural. »
Dans mon entreprise, nous avons une base qui a été conçu sur ce principe de l’encapsulation. Les requêtes de cette base, assez complexes, ont été rendu lisibles par l’application des principes du développement procédurale : « découpe et place dans des blocs plus petits ».
Cette base utilise donc de nombreuses fonctions tables. des fonctions. des fonctions à l’intérieur de fonctions tables. des fonctions tables à l’intérieur de fonctions tables…
Le résultat est lisible mais contre-performant comme l’explique rudi dans la partie II-D-1.
Par conséquent, si vous avez en charge le développement de requêtes, de procédures stockées : Oubliez ce que vous avez appris comme bon développeur, ne réutilisez pas, n’encapsulez pas, soyez économe avec les fonctions T-SQL.
Pour obtenir une requête rapide, vous devez écrire une requête littérale! d’un bloc! Pour rendre lisible, indentez! Organisez les jointures mais n’encapsulez pas! Ne factorisez pas en SQL !
Bon coding!