Vérification des parameters NULL – WHERE vs IF

@return_count actuellement une procédure stockée à laquelle @return_count est un paramètre. Voici un exemple autonome des deux façons dont je peux définir sa valeur si une NULL est transmise.

Impossible de déterminer si l'optimiseur de requête les traite de la même manière ou si une méthode est meilleure que l'autre.

 DECLARE @return_count int SET @return_count = null IF @return_count is null BEGIN SELECT @return_count = 10 END GO DECLARE @return_count int SET @return_count = null BEGIN SELECT @return_count = 10 WHERE @return_count is null END 

Vous pourriez vouloir considérer

 SELECT @return_count = ISNULL(@return_count, 10) 

Ils renvoient des plans exec différents, et le premier est considérablement less complexe. Ce dernier implique des opérations de filtrage et d'parsing. Comme il ne semble pas que cela doive évoluer, j'irais avec le premier.

Il semble que votre procédure stockée peut prendre un paramètre optionnel @return_count. Si tel est le cas, vous pouvez l'exprimer directement comme

 CREATE PROCEDURE myStoredProc @return_count int = 10 AS BEGIN .... my logic END