SQL Server中的表提示有什么用途,如NOLOCK
和READUNCOMMITTED
?
请举例解释。
另外,为什么不能为INSERT
,UPDATE
或DELETE
操作修改的表格指定它们?
答案 0 :(得分:3)
它们允许您逐个表地设置事务隔离级别,而不是整个查询或连接。
它们还可用于触发某些功能,例如最小日志记录(使用TABLOCK
并在INSERT
上设置正确的跟踪标记,并且可以将其记录得最少。
通常,使用连接级设置更好。
答案 1 :(得分:1)
正如评论员指出的那样,联机丛书对表格提示有很好的描述(和样本),包括哪些提示可以用于哪些操作。
http://msdn.microsoft.com/en-us/library/ms187373.aspx
页面顶部还有一个很大的警告,经常被忽视:
警告因为SQL Server查询优化器通常会选择 查询的最佳执行计划,我们建议仅使用提示 作为经验丰富的开发人员和数据库的最后手段 管理员。
虽然优化者在选择最佳计划时的准确性值得商榷,但警告的后半部分肯定是正确的;不要使用表提示,除非您确定需要它们,并且这种保证通常只有经验。