【发布时间】:2020-09-26 04:57:37
【问题描述】:
我有一个用户上传了一个包含 20 万行 IP 的 csv。我必须验证上传的 IP 是否已存在于数据库中。查询数据库的优化方式是什么?
我正在使用休眠连接到 Oracle 数据库,并且我知道 IN 查询运算符接受有限的值 (1000)。因此,要获取 200k 个值,它将执行 200 个查询,这既耗时又不是优化的方式。
查询数据库的最佳方法是什么?
【问题讨论】:
-
将数据上传到单独的(临时?)表并执行 JOIN 或 WHERE id IN 查询。在对面表中的
id上创建索引。 -
使用单个 MERGE 语句从 krokodilko 建议的临时表到使用 IP 作为过滤器/连接的永久表。
标签: database oracle spring-boot hibernate spring-data-jpa