快速提问-为什么以下查询使用哈希匹配?
BusinessentityID
的类型为Int
,目前我还不能真正解释为什么他们需要使用散列吗?
使用像数据结构这样的琐碎数组合并是否会更快?
尽管我猜想在连接子句中使用其他数据类型(例如GUID
)的情况下会有意义吗?
答案 0 :(得分:3)
通常,最快的1,2,3
类型将使用索引。因此,如果您关心性能,请在join
上添加索引。
已对数据进行排序时使用合并联接。如果未排序,则排序相当昂贵-O(n log(n))。
相比之下,散列连接需要“仅”散列值并将它们在bin中进行比较。在许多情况下,这是O(n)。当然,如果您的数据确实很大,或者某些值重复很多次,则哈希联接将出现内存问题或哈希冲突-并且算法的复杂性会增加。
但是,关键是优化器选择了它认为最适合数据的算法。如果您将性能作为主要考虑因素,那么强烈建议您使用索引。