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