我想知道连接提示(MERGE、HASH、LOOP、REMOTE)之间的区别。那么,在哪些情况下我应该选择哪一种,为什么?如何知道我应该使用哪个提示?
使用这些提示有好处还是有坏处?
如果我使用正确的提示,我的查询性能会更好吗?也有不好的事情吗?
当我使用这些提示时,有什么限制吗?
最广泛使用的提示是nolock,许多高级用户对此表示不满。SQL Server不鼓励使用提示。SQL Server引擎非常强大和复杂,通常会自己生成"最佳"查询计划,并且通常会忽略大多数提示。如果一个索引没有被使用,那么它要么选择性不足(因此它不为SQL Server的使用付费),要么它的统计信息已经过时。在SQL Server 2008和以后的版本中,您需要提示吗?您可能需要更多/更好的索引或更好的SQL。
您可能需要提示的唯一时间是,如果您尝试修复索引,而SQL Server没有使用它们,或者它没有使用实际查询计划所指示的正确类型的联接来联接事物。但这种情况非常罕见。