【发布时间】:2015-11-26 19:44:49
【问题描述】:
嗨,我的项目有这个实时问题,比如说我有两个表
TABLE STUDENT & TABLE CLASSATTENDANCEHISTORY,(名字是虚构的)
STUDENT
NAME, ID, LAST_TIME_SEEN_IN_COLEGE,
CLASSHISTORY
CLASSNAME, ID, STUDENT_ID, LAST_TIME_PRESENT,
" 现在我想删除所有学生名单,学生是 student.last_time_seen_in_colege > classHistory.last_time_present "
由于这两个表,假设将有数百万行,所以我想分批做,一次 50 个批次,否则表将被锁定很长时间,这两个表非常活跃表格。
两个表都会有很多操作,所以我想批量使用。
JOIN 还是 SUBQUERY 会是最好的吗?或者我可以将整个表存储在 JAVA 内存中而不是进程中吗?请一些专家建议,我希望它是最好的?
我知道我们可以使用内连接,但我想知道有效的方法,如果我说每次进行内连接 50 批,内连接每次都会搜索整个表。
【问题讨论】:
-
你为什么大喊大叫?请回复(也只是尝试一下,我猜联接工作正常,Java 可能会耗尽内存,但你自己看看)
-
这是用于 MySQL 还是 SQL Server?请删除它不适合的标签。
-
即使有数百万条记录,如果您有适当的索引,连接也应该非常有效。您应该能够在一个简单的 sql 语句中执行删除(如果您绝对需要,您可以添加一个限制子句并重复执行查询,直到它返回 0 条已修改的记录)。
-
您使用的是哪个 DBMS?后格雷斯?甲骨文?
-
我已经知道了,我期待更有效的方法!这是非常常见的方法,每个人都这样做,我正在使用 Sql,
标签: java sql optimization