问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
MySQl如何执行联接查询?
MySQL认为每一个查询都是联接---不仅是匹配两张表中对应行的查询,而是每一个查询、每一个片段(包括子查询,甚至基于单表的SELECT)都是联接。
因此,理解MySQL如何执行UNION查询至关重要。对于UNION查询,MySQL先将一系列的单个查询结果放到一个临时表中,然后再重新读出临时表中的数据来完成UNION查询。在MySQL的概念中,每个查询都是一次联接,所以读取临时表的结果也是一次联接。
在MySQL8.0.20以前,联接执行策略很简单:MySQL对任何联接都执行嵌套循环联接操作,即MySQL先在一个表循环取出单条数据,然后再嵌套循环到下一个表中寻找匹配的行,依次下去,直到找到所有表中匹配的行为止。最后根据各个表匹配的行,返回查询中需要的各列。
在MySQL8.0.20以后,已经不再使用基于块的嵌套循环联接操作,取而代之的是哈希联接,这让联接操作性能变得更好,特别是当数据集可以全部存储在内存时。
评论
有用 4
墨值悬赏