观察与调参
观察与调参
EXPLAIN SELECT * FROM appdb.a JOIN appdb.b ON b.code = a.code;
-- Extra: Using join buffer (hash join)
SHOW VARIABLES LIKE 'join_buffer_size'; -- 每会话/每连表分配,慎调大
-- 8.0.18 前可用 hint:
SELECT /*+ NO_BNL() */ ... ;| 替代 | Block Nested Loop(旧) |
|---|---|
| 前提 | 等值连表条件 |
| 内存 | 超出 join_buffer_size 落盘,性能骤降 |
Hash Join 是「没索引时的补救」,不是优化目标:被驱动表有索引时 Nested Loop 往往仍更快。