2010-07-22 9 views
0

J'ai créé l'index unique filtré dans une table de ma base de données. D'après mes recherches, si je veux faire une opération sur cette table de asp.net j'ai besoin pour activer l'opération de jeu suivante pour ma connexionFiltered index dans SQL Server 2008

SET CONCAT_NULL_YIELDS_NULL ON 
SET ANSI_PADDING ON 
SET ANSI_WARNINGS ON 

Si je retourne les caractéristiques ci-dessus, quel sera l'effet? Est-ce que cela cause un problème? Y a-t-il une autre meilleure option?

Merci à l'avance

Répondre

2

Aucun des trois éléments que vous devez pour vous d'utiliser correctement votre index. Le facteur le plus important qui détermine si un index sera utilisé ou non est la construction de la requête, et son évaluation par le moteur de l'optimiseur de requête.

Mais, pour aller avec ce que vous avez évoqué, nous allons vérifier l'utilisation des trois:

SET CONCAT_NULL_YIELDS_NULL SUR

Profitons de cette déclaration SET @Name = @FirstName + ' ' + @LastName

Si @FirstName est NULL ou @LastName est NULL, alors votre @Name sera NULL. Si vous ne voulez pas ce comportement - vous voulez NULL être traité comme une chaîne vide, alors vous SET CONCAT_NULL_YIELDS_NULL ON

SET ANSI_PADDING SUR

Ce sera dépréciée à l'avenir. Sur SQL Server, cette option est activée par défaut. En fait, sur les versions plus récentes de SQL Server, vous ne pouvez même pas le désactiver.

Cela affecte le stockage des données dans une colonne varchar - par exemple, si vous l'activez, une valeur de TEST sera stockée avec un espace vide de fin si vous le désactivez, les espaces de fin sont supprimés. La même chose s'applique aux zéros finaux dans une colonne VarBinary.

SET ANSI_WARNINGS SUR

Ceci est pour le regroupement et un total. Si vous avez une valeur NULL dans n'importe quelle fonction d'agrégat, et que vous voulez savoir qu'il y a une valeur NULL, alors vous devez l'activer. Si vous ne voulez pas savoir qu'une valeur NULL a été éliminée de l'agrégat, vous désactivez cette option.