用于组合两个表的优化Sql查询?

时间:2015-09-01 14:11:29

标签: java sql optimization

嗨,我的项目有实时问题,比如我有两张桌子

表学生& TABLE CLASSATTENDANCEHISTORY,(名称是虚构的)

STUDENT
NAME, ID, LAST_TIME_SEEN_IN_COLEGE,


CLASSHISTORY
CLASSNAME, ID, STUDENT_ID, LAST_TIME_PRESENT,

"现在我想要删除所有学生名单.stild.last_time_seen_in_colege> classHistory.last_time_present"

作为两个表,让我们说会有数百万行,所以我想在批次中这样做,一次50个批次,或者表会锁定很长一段时间,这两个表非常活跃表。

两个表都有很多操作,所以我想分批使用。

加入或提交是否最好?或者我可以在JAVA内存和过程中存储整个表格吗?请一些专家建议我希望它是最好的?

我知道我们可以使用内部联接,但我想知道有效的方法,如果我说内部连接每次50个批次,内部联接将每次搜索整个表。

1 个答案:

答案 0 :(得分:1)

delete from student where id in ( select id from student s where exists (select null from classhistory c where s.last_time_seen_in_college > c.last_time_present )

上面的查询将适用于这种情况。

关于询问tom何时使用join以及何时进行子查询的说明 https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:66812779016023

在这种情况下,java不是一个选项,因为你提到该表将有数百万行来选择那些数百万行并将它们存储到结果集中,然后处理它们将花费更多的时间,然后我们可以想象。