Optimisation des comparaisons NULL dans SQL Server
Lorsque vous traitez des variables nullables dans une requête SQL Server, il est important de gérer les comparaisons efficacement. Supposons que vous ayez une variable @OrderID qui pourrait être NULL. Pour interroger des données en fonction de la valeur de la variable, vous pouvez recourir aux instructions IF ELSE pour vérifier NULL. Cependant, il existe une manière plus concise d'effectuer de telles comparaisons en une seule requête.
L'approche recommandée consiste à utiliser l'opérateur EXISTS avec l'opérateur d'ensemble INTERSECT. L'extrait de code suivant le démontre :
SELECT * FROM Customers WHERE EXISTS (SELECT OrderID INTERSECT SELECT @OrderID);
Cette requête vérifiera efficacement si la valeur de @OrderID existe dans la colonne OrderID de la table Customers. Si @OrderID est NULL, il renverra les lignes où OrderID est également NULL. À l'inverse, si @OrderID a une valeur non NULL, il renverra des lignes où OrderID est égal à @OrderID.
Cette approche adhère au principe « Plans de requêtes non documentés : comparaisons d'égalité », qui suggère que des plans optimisés sont générés. lors de la comparaison d'une variable à elle-même à l'aide d'INTERSECT. En utilisant cette technique, vous pouvez rationaliser vos requêtes et améliorer les performances lorsque vous traitez des variables nullables.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!