DECLARE @StartTime DATETIME
SET @StartTime = GETDATE()
DECLARE @i INT
SET @i = 0
WHILE (@i < 1000000)
BEGIN
DECLARE @A SQL_VARIANT
DECLARE @B SQL_VARIANT
IF RAND() < 0.1
SET @A = NULL
ELSE
SET @A = RAND()
IF RAND() > 0.9
IF RAND() < 0.1
SET @B = NULL
ELSE
SET @B = RAND()
ELSE
SET @B = @A
-- Test 1
IF (@A <> @B) OR (@A IS NULL AND @B IS NOT NULL) OR (@A IS NOT NULL AND @B IS NULL) SET @i = @i + 1 ELSE SET @i = @i + 1
-- End test 1
-- Test 2
-- IF EXISTS (SELECT @A EXCEPT SELECT @B) SET @i = @i + 1 ELSE SET @i = @i + 1
-- End test 2
-- Test 3
-- IF (@A = @B) GOTO Equal ELSE IF @A IS NULL AND @B IS NULL GOTO Equal
--NotEqual:
--Equal:
-- SET @i = @i + 1
-- End Test3
-- Test 4
--IF (ISNULL(@A, 0) <> ISNULL(@B, 0)) SET @i = @i + 1 ELSE SET @i = @i + 1
-- End Test 4
END
PRINT DATEDIFF(ms, @StartTime, GETDATE())
-- IF (@A <> @B) OR (@A IS NULL AND @B IS NOT NULL) OR (@A IS NOT NULL AND @B IS NULL)
-- 4133
-- 3650
-- 3976
-- 3866
-- 3616
-- AVG = 3848
-- IF EXISTS (SELECT @A EXCEPT SELECT @B)
-- 7690
-- 7486
-- 7876
-- 7676
-- 8253
-- AVG = 7796
-- IF (@A = @B) GOTO Equal ELSE IF @A IS NULL AND @B IS NULL GOTO Equal
-- 3933
-- 4586
-- 4326
-- 4086
-- 3713
-- AVG = 4140
-- IF (ISNULL(@A, 0) <> ISNULL(@B, 0)) SET @i = @i + 1 ELSE SET @i = @i + 1
-- 3636
-- 3913
-- 3763
-- 3973
-- 4426
-- AVG = 3942