在MySQL 8.0.18中,增加了Hash Join新功能,它適用於未創建索引的字段,做等值關聯查詢。在之前的版本里,如果連接的字段沒有創建索引,查詢速度會是非常慢的,優化器會採用BNL(塊嵌套)算法。
Hash Join算法是把一張小表數據存儲到內存中的哈希表裏,並逐行去匹配大表中的數據,計算哈希值並把符合條件的數據,從內存中返回客戶端。
用sysbench生成4張表,並刪除默認的k字段索引。
我們用explain format=tree命令可以查看到已經使用到hash join算法。
但目前8.0.18版本,僅支持join。left join和right join失效,這裏請注意。