

- Description
- Des tubes à essai
- Source
- B.Lachner · page d’origine
- Licence
- CC0 Domaine public
Exemples : procédural contre ensembliste
Six cas, côte à côte, avec leurs pièges et leur vérification d'équivalence.
En bref
- Six cas : cumul, mise à jour, dédoublonnage, texte agrégé, calendrier, îlots.
- Même structure : énoncé, données, deux versions, pièges, vérification.
- Table de correspondance : « quand une boucle fait X, penser à Y ».
Six cas courants où le traitement ligne à ligne est tentant, chacun présenté avec la même structure : énoncé, jeu de données, version procédurale et version ensembliste côte à côte, résultat attendu, pièges, variantes et vérification d'équivalence.
Chaque exemple est autonome : créez les tables dans une base de test, exécutez la version procédurale, puis la version ensembliste, et comparez. Le dernier bloc de chaque page vérifie que les deux versions rendent le même résultat. Pour chiffrer les écarts, voir Mesurer sérieusement.
Les six exemples#
Un tableau de correspondance#
Quand une boucle fait X, chercher l'équivalent ensembliste de X :
| Si la boucle fait… | Penser à… | Exemple |
|---|---|---|
| Un cumul ou un état courant | Fonction de fenêtre (SUM() OVER, LAG) | Cumul glissant |
| Une recherche par ligne dans une autre table | Jointure (UPDATE … FROM … JOIN) | Mise à jour par référence |
| Un test d'existence ou de doublon | EXISTS, ROW_NUMBER | Dédoublonnage |
| Une concaténation par groupe | STRING_AGG (ou FOR XML PATH) | Agrégation de texte |
| Une génération de lignes | Table de nombres, GENERATE_SERIES | Calendrier |
| Un suivi de séquence (« la ligne d'avant ») | Différence avec ROW_NUMBER, ou LAG + somme cumulée | Îlots |
Pour aller plus loin#
Ces six exemples sont des motifs. Pour des traitements entiers qui cumulent plusieurs erreurs, voir les cas catastrophiques, et la démarche qui les évite.
Comment lire ces pages#
- Le code procédural est écrit correctement : on compare des versions justes, pas un contre-exemple de paille.
- Aucun chiffre de performance n'est avancé : les écarts dépendent de l'environnement. Le script de la page Mesurer sérieusement permet de les mesurer chez vous.
- Les pièges sont autant de raisons de vérifier l'équivalence entre l'ancien et le nouveau traitement.