如何解决更快的流程返回方式
我想从数据库中退回最后给定的护照。 在表1中,只有一个护照信息。在表2中,所有护照信息都属于每个人。
我的比较代码工作非常缓慢,需要太多时间。 因此,如果我的代码有更快的备用代码,请在Tanks befor之前与我们共享。
from table1 t
where t.pass_date <
(select max(tb_datebeg) from table2 where tb_inn = t.tin)
解决方法
我们可以将其与分析功能一起表述为联接:
WITH cte AS (
SELECT t1.*,MAX(t2.tb_datebeg) OVER (PARTITION BY t2.tb_inn) max_tb_datebeg
FROM table1 t1
INNER JOIN table2 t2 ON t2.tb_inn = t1.tin
)
SELECT *
FROM cte
WHERE pass_date < max_tb_datebeg;
上面的查询将从table2
上的以下索引中受益:
CREATE INDEX idx2 ON table2 (tb_inn,tb_datebeg);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。