我在没有显式事务的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。
你能解释一下这种行为的原因吗?
感谢。
答案 0 :(得分:1)
Use the ALLOW_PAGE_LOCKS clause of ALTER/CREATE INDEX:
ALTER INDEX indexname ON tablename SET (ALLOW_PAGE_LOCKS = OFF);