Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中表提示的用途是什么?_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

SQL Server中表提示的用途是什么?

SQL Server中表提示的用途是什么?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,SQL Server中的表提示(如NOLOCK和READUNCOMMITTED)的用途是什么 请举例说明 另外,为什么不能为通过INSERT、UPDATE或DELETE操作修改的表指定它们呢?它们允许您逐个表设置事务隔离级别,而不是为整个查询或连接设置事务隔离级别 它们还可以用于触发一些功能,如最小日志记录(使用TABLOCK,在INSERT上设置正确的跟踪标志,并且可以最小日志记录) 通常,最好使用连接级别设置。正如评论员所指出的,联机丛书对表提示有很好的描述(和示例),包括哪些提示可用于哪些

SQL Server中的表提示(如
NOLOCK
READUNCOMMITTED
)的用途是什么

请举例说明


另外,为什么不能为通过
INSERT
UPDATE
DELETE
操作修改的表指定它们呢?

它们允许您逐个表设置事务隔离级别,而不是为整个查询或连接设置事务隔离级别

它们还可以用于触发一些功能,如最小日志记录(使用
TABLOCK
,在
INSERT
上设置正确的跟踪标志,并且可以最小日志记录)


通常,最好使用连接级别设置。

正如评论员所指出的,联机丛书对表提示有很好的描述(和示例),包括哪些提示可用于哪些操作

在页面顶部还有一个很大的警告,经常被忽略:

注意,因为SQL Server查询优化器通常会选择 对于查询的最佳执行计划,我们建议只使用提示 作为经验丰富的开发人员和数据库管理员的最后手段 管理员


虽然优化器在选择最佳计划时的准确性是有争议的,但警告的后半部分肯定是正确的;除非您确信自己需要表格提示,否则不要使用表格提示,而且这种保证通常需要经验。

表格提示用于修改查询优化器关于次要问题插入、删除、删除和删除的默认行为,而且无论隔离级别如何,更新都会使用锁,所以允许这样做没有任何意义。