【发布时间】:2016-04-22 15:33:10
【问题描述】:
我在 SQL Server 2008 R2 上执行了两个没有显式事务的 SQL 选择查询
查询 1:
SELECT *
FROM MyTable
WHERE Field1 = 'XXX' AND Field2 = 'YYY'
查询 2:
SELECT *
FROM MyTable
WHERE Field1 = N'XXX' AND Field2 = N'YYY'
“查询 2”比“查询 1”快,但在“查询 2”运行时,我无法在“MyTable”上写入 (INSERT) 新记录...“MyTable”似乎已锁定。相反,在“查询 1”运行时,我可以悄悄地添加新记录。
注意:“MyTable”有一个聚集的复合键(两列)和其他索引。
您能解释一下为什么会出现这种行为吗?
谢谢。
【问题讨论】:
-
您的默认隔离级别是多少?
DBCC useroptions; -
它是“已提交读”
-
查询 1 和查询 2 返回的行数是否相同?
-
是...都是同一个查询,只是改变参数赋值的方式。
-
@Luca Petrini,你找到解释了吗?
标签: sql sql-server performance isolation-level