多个or 之后 in 会有笛卡儿积

看了一下执行计划,大概步骤是这样的:
首先"80566854-c62d-4cfb-bd0d-5d7b2cd8d7e7" IN (“feb29428-0cf4-4bf6-95a5-4c7a8f54d8ee”,“35738ee8-c9be-4d63-acda-694778ad13d2”) 这个条件直接被抛弃掉了

1、97~48:ur表和rr表先做NL内连接,并且都走了索引
2、45~33:u表和s表再做Hash外连接,都是全表扫
3、19~18:上述2个结果集进行笛卡尔连接,并进行逻辑OR

所以看下你不带OR的SQL,执行计划是不是表s和ur、rr先做半连接,最后再和u表做外连接?另外这个CARTESIAN只是笛卡尔连接,不会影响你SQL最终返回的结果

1 个赞