hashjoin本身的算法实现并不复杂。要说它很复杂,可能是优化器选择执行计划时,是否选择hashjoin,选择外观,内部表可能更复杂。无论如何,现在使用hashjoin,优化器在选择join算法时还有另一个选择。MySQL基于实用主义。我相信这个增强也回答了一些问题。有些职能并非无能,而是有优先权。
在8.0.18之前,MySQL只支持nestlopjoin算法。最简单的是简单的nestloop连接。MySQL对该算法进行了一些优化,包括块嵌套循环连接、索引嵌套循环连接和批密钥访问。通过这些优化,可以在一定程度上缓解hashjoin的紧迫性。接下来,我们将用一个单独的章节来讨论MySQL的这些连接优化。接下来,我们将讨论hashjoin。
Hash Join算法
Nestloopjoin algorithm is simply a double loop, which traverses the surface (drive table), for each row of records on the surface, then traverses the inner table, and then determines whether the join conditions are met, and then determines whether to spit out the records to the last execution node. In terms of algorithm, this is a complexity of M * n. Hash join is an optimization for equal join scenarios. The basic idea is to load the external data into memory and establish a hash table. In this way, you c