[SGBD] [Optimisation] Pourquoi l’écriture de fonctions encapsulées est à bannir en SQL ?

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!

Laisser un commentaire