0

我在我的一个数据库表中创建了过滤的唯一索引。根据我的研究,如果我想从 asp.net 对该表进行任何操作,我需要打开以下设置操作到我的连接

SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON

如果我打开上述功能,会产生什么效果?它会导致任何问题吗?还有其他更好的选择吗?

提前致谢

4

1 回答 1

2

正确使用索引所需的三个项目都不是。决定是否使用索引的最大因素是查询的构造,以及查询优化器引擎的评估。

但是,继续您提出的内容,让我们检查一下这三个的用法:

设置 CONCAT_NULL_YIELDS_NULL ON

让我们来看看这个声明SET @Name = @FirstName + ' ' + @LastName

如果@FirstName 为NULL 或@LastName 为NULL,那么您的@Name 将为NULL。如果您不希望这种行为 - 您希望 NULL 被视为空字符串,那么您SET CONCAT_NULL_YIELDS_NULL ON

设置 ANSI_PADDING ON

这将在未来被弃用。在 SQL Server 上,默认设置为 ON。事实上,在较新版本的 SQL Server 上,您甚至无法将其关闭。

这会影响 varchar 列中的数据存储 - 例如,如果您将其打开,TEST则将存储一个值以及一个尾随空格,如果您将其关闭,则删除尾随空格。同样的事情也适用于 VarBinary 列的尾随零。

设置 ANSI_WARNINGS ON

这是用于分组和总计。如果您在任何聚合函数中有一个 NULL 值,并且您想知道有一个 NULL 值,那么您将其设置为 ON。如果您不想知道 NULL 已从聚合中消除,则将其设置为 OFF。

于 2010-07-22T11:50:27.723 回答