记录一次”MSSQL sql server2008″ 奇怪的现象


现象描述:
运行下面 “第二步”,有时会返回数据,有时不返回相关数据

/*第一步创建临时表*/
CREATE TABLE #tmpTest (testKeyId UNIQUEIDENTIFIER PRIMARY KEY);
INSERT INTO #tmpTest
SELECT TOP 500 NEWID()
FROM master.sys.all_objects o1 (NOLOCK)
CROSS JOIN master.sys.all_objects o2 (NOLOCK);

/*第二步获取数据*/
SELECT testKeyId
FROM #tmpTest
WHERE [testKeyId] IN (‘00000000-0000-0000-0000-000000000000’, NEWID());

/*第三步删除临时表
drop table #tmpTest */




分析现象的执行计划:
发现展示数据时,谓词采用的为范围查找:
查找键[1]: 起始: [tempdb].[dbo].[#tmpTest].testKeyId > 标量运算符([Expr1009]),
结尾: [tempdb].[dbo].[#tmpTest].testKeyId < 标量运算符([Expr1010])