现在,我正在使用此查询选择数据(简化):
SELECT person.*, pty.*
FROM PERSON person
LEFT JOIN PARTNER partner
ON partner.FK_BPE_ISTC_ID = person.BSPE_ISTC_ID
INNER JOIN PTY pty
ON pty.PTY_ISTC_ID = IIF(person.FORGN_ISTC_IND != 0, person.FORGN_ISTC_IND, partner.FRGN_ISTC_ID)
Run Code Online (Sandbox Code Playgroud)
问题是需要很长时间才能完成,并且执行计划如下所示:
需要处理近 2000 万行(图片)才能最终得到 25000 行。
有没有更好的方法将 PTY 表与条件连接起来?
IIF条件中使用的函数ON将使查询不可控制
当这些列中的任何列上有索引时person.FORGN_ISTC_IND,下面的查询person.FORGN_ISTC_IND将执行得更好partner.FRGN_ISTC_ID
SELECT person.*,
pty.*
FROM PERSON person
LEFT JOIN PARTNER partner
ON partner.FK_BPE_ISTC_ID = person.BSPE_ISTC_ID
INNER JOIN PTY pty
ON ( person.FORGN_ISTC_IND != 0
AND pty.PTY_ISTC_ID = person.FORGN_ISTC_IND )
OR pty.PTY_ISTC_ID = partner.FRGN_ISTC_ID
Run Code Online (Sandbox Code Playgroud)