SQL Server选择查询锁定插入。为什么?

时间:2016-04-22 15:33:10

标签: sql sql-server performance isolation-level

我在没有显式事务的SQL Server 2008 R2上执行了两个SQL select查询

查询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”有一个聚簇复合键(两列)和其他INDEXES。

你能解释一下这种行为的原因吗?

感谢。

1 个答案:

答案 0 :(得分:1)

Use the ALLOW_PAGE_LOCKS clause of ALTER/CREATE INDEX:

ALTER INDEX indexname ON tablename SET (ALLOW_PAGE_LOCKS = OFF);