【发布时间】:2015-05-29 11:51:32
【问题描述】:
我想知道连接提示(MERGE、HASH、LOOP、REMOTE)之间的区别。那么,在哪些情况下我应该选择哪一种,为什么?如何知道我应该使用哪个提示?
在使用提示方面有什么赞成或反对的意见吗?
如果我使用正确的提示,我的查询性能会更好吗?也有不好的地方吗?
当我使用这些提示时有什么限制吗?
【问题讨论】:
标签: sql-server performance join hints join-hints
我想知道连接提示(MERGE、HASH、LOOP、REMOTE)之间的区别。那么,在哪些情况下我应该选择哪一种,为什么?如何知道我应该使用哪个提示?
在使用提示方面有什么赞成或反对的意见吗?
如果我使用正确的提示,我的查询性能会更好吗?也有不好的地方吗?
当我使用这些提示时有什么限制吗?
【问题讨论】:
标签: sql-server performance join hints join-hints
使用最广泛的提示是许多高级用户不赞成的 nolock。 SQL Server 不鼓励使用提示。 SQL Server 引擎非常非常强大和复杂,通常会自行生成“最佳”查询计划,并且通常会忽略大多数提示。如果一个索引没有被使用,它要么没有足够的选择性(所以它不需要为 SQL Server 付费)或者它的统计数据是陈旧的。在 SQL Server 2008 和以后的版本中,您非常非常少需要提示 - 您可能需要更多/更好的索引或更好的 SQL。
您可能需要提示的唯一情况是,如果您尝试修复索引并且 SQL Server 没有使用它们,或者它没有使用实际查询计划所指示的正确类型的 Join 来连接事物。但这种情况非常少见。
【讨论】: