检查表中是否存在1000万行的行

xoefb8l8  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(446)

我将xml文件值导入db,并检查行是否已经存在,这需要花费大量时间,因为表中有大约1000万行。导入一个文件大约需要90秒,空数据库4秒。我正在用laravel eloquent exists()方法检查行是否存在。我想减少这个时间尽可能多,如果我导入10k文件,它需要几天。我想在redis缓存中保存插入的行,并检查缓存中是否存在行,但如果由于某种原因缓存被清除,我不想在数据库中复制。有什么比redis更好的吗?

ykejflvf

ykejflvf1#

您应该使用exist-check来使用dbms和redis-like

for row in file do
  if row not in redis then
    if row not in RDMS then
      insert_row_in_RDBMS
      insert_row_in_redis 
    else
      insert_row_in_redis 
    end
  end
end

使用它可以减少查询时间,不过这只在文件中有许多重复行时才有帮助。

相关问题