为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:
【CPU】:
【问题描述】*:
请大佬们帮忙看下,这个问题是什么原因呢。
执行以下SQL结果如【图1】所示,仅返回2条数据。将最后一个条件去除后执行结果如【图2】,返回13条数据
SELECT u.F_AGENT_REPEAT_CUR_TYPE
FROM t_user_apply_info u
LEFT JOIN t_apply_info a
ON u.F_CANDIDATE_APPLY_ID = a.f_id
WHERE u.f_recruit_type = 4
AND u.f_user_id = 100501
AND (u.F_AGENT_REPEAT_CUR_TYPE IS NULL
OR u.F_AGENT_REPEAT_CUR_TYPE <> -1
OR a.F_ID IS NULL)
AND (u.f_apply_status IN (2,8,7,14))
AND u.f_resume_id <> 0
AND (u.F_ISRECEPT_BYHEADHUNTER IS NULL
OR u.F_ISRECEPT_BYHEADHUNTER <> 1)
AND (u.F_AGENT_REPEAT_CUR_TYPE IS NULL
OR u.F_AGENT_REPEAT_CUR_TYPE <> 0)
改成这样看看
SELECT /*+OPTIMIZER_OR_NBEXP(2)*/
u.F_AGENT_REPEAT_CUR_TYPE
FROM t_user_apply_info u
LEFT JOIN t_apply_info a
ON u.F_CANDIDATE_APPLY_ID = a.f_id
WHERE u.f_recruit_type = 4
AND u.f_user_id = 100501
AND (u.F_AGENT_REPEAT_CUR_TYPE IS NULL
OR u.F_AGENT_REPEAT_CUR_TYPE <> -1
OR a.F_ID IS NULL)
AND (u.f_apply_status IN (2,8,7,14))
AND u.f_resume_id <> 0
AND (u.F_ISRECEPT_BYHEADHUNTER IS NULL
OR u.F_ISRECEPT_BYHEADHUNTER <> 1)
AND (u.F_AGENT_REPEAT_CUR_TYPE IS NULL
OR u.F_AGENT_REPEAT_CUR_TYPE <> 0)
optimizer_or_nbexp去掉16参数值应该就可以
你多一个条件,查询的结果更精确,按照你图的情况,是正确的,如果结果不符合你的预期,可以尝试改写一下sql