Zer*_*ity 5 isnull sql-server-2008-r2 merge-statement
在处理数十亿条记录以比较合并语句中的 NULL 时,哪种语句是完美或更好的。我尝试过 SET ANSI_NULLS OFF 但这在合并语句中不起作用。这是我的两种方法
ISNULL(SRCColumn,-11111) = ISNULL(DSTColumn, -11111)
Run Code Online (Sandbox Code Playgroud)
或者
SRCColumn = DSTColumn OR (SRCColumn IS NULL AND DSTColumn IS NULL)
Run Code Online (Sandbox Code Playgroud)
请告诉我是否有更好的方法来处理。因为我有大约 15 列需要比较。
SRCColumn = DSTColumn OR (SRCColumn IS NULL AND DSTColumn IS NULL)
我建议您使用此版本,因为它最准确地表达了您希望 SQL Server 执行的操作。
这两个语句在逻辑上是等效的(除非 -11111 是该列的合法值),但是该语句更容易识别,并且这两个语句的运行时性能可能只有微不足道的差异。