Les jointures triangulaires

Nous avons tous entendu qu’écrire du code ensembliste pour gérer des données dans une base de données est la meilleure façon d’obtenir des performances correctes.

Il est vrai qu’il est difficile pour un développeur ayant une expérience du développement d’applications, en quelque langage de programmation que ce soit, de passer du code procédural, qui, en outre, traite des jeux de données extraits de bases de données « ligne par ligne », à un langage conçu pour manipuler des ensembles de données.

Nous n’aborderons pas ici l’utilisation, à proscrire, des curseurs et des boucles utilisant la commande WHILE, mais nous allons voir que, si l’on croit avoir écrit du code ensembliste, il s’agit en fait de code procédural, et qu’il peut s’avérer être contre-performant. Lire la suite

Voir les statistiques du client avec SQL Server Management Studio

Nombreux sont les boutons dans la barre d’outils de l’éditeur SQL proposé par SQL Server Management Studio (SSMS).

L’un d’entre eux permet d’obtenir des statistiques sur l’exécution de requêtes, sur les échanges réseau entre SSMS et le moteur de base de données, et sur le temps d’exécution de la requête, comme par exemple le délai d’attente de réponse du serveur.

Voyons comment les obtenir …
Lire la suite

Utiliser le type TABLE avec SQL Server 2008

Il est parfois nécessaire de créer un curseur pour exécuter une procédure stockée sur chacune des lignes du curseur, en passant en paramètre les valeurs des colonnes de la requête qui spécifie le curseur.
SQL Server 2008 a introduit le type TABLE, qui permet de spécifier par un type des variables de type TABLE.
Cette solution est une alternative moins pire que le curseur : voyons comment l’utiliser (avec modération !)
Lire la suite

Vérifier l’unicité de tuples NULLables avec les index filtrés sous SQL Server 2008

Toute contrainte d’unicité entraîne la création implicite d’une index unique sur la table, dont la clé est constituée des colonnes spécifiées dans la contrainte d’unicité.

Or, lors de l’insertion d’une nouvelle ligne ou de la modification d’une des colonnes constituant la clé unique, SQL Server considère NULL comme une valeur.
Cela est faux puisque NULL n’est pas une valeur : c’est l’absence de valeur.

Avec SQL Server 2008 ont été introduits les index filtrés, qui permettent de spécifier les lignes candidates à l’indexation, par l’ajout d’une simple clause WHERE.
Dès lors, il est possible de contourner le problème posé par les contraintes d’unicité en se servant de ce type d’index …

Lire la suite