OceanBase V4 中,Nested Loop Join、Hash Join、Sort Merge Join 分别适用于哪些场景?各自有什么限制?
-
Nested Loop Join(NLJ) :适用于外表行数较少、内表连接字段上有索引的场景,通常返回结果集较小,常用于 TP 场景。 支持等值和非等值连接;如果内表无索引,性能会明显下降。
-
Hash Join(HJ) :适用于大表关联或大小表关联,尤其是连接字段无索引、数据量较大的场景。 通常只适用于等值连接,会在内存中构建哈希表,再探测右表匹配行。
-
Sort Merge Join(MJ) :适用于两表数据量较大、连接字段有序或全表扫描优于索引扫描的场景。 可处理等值和范围连接,但如果连接字段无序,需要先排序,排序开销较大。