0

要求:

  1. 请考虑春季批量申请。
  2. 输入是一个包含一列值的文件。
  3. Spring Batch 被设计为面向块的设计。
  4. Chunk 设计为一次记录 1000 条记录
  5. 因此,Reader 在微秒内从文件中读取 1000 条记录。
  6. 处理器一次获取一条记录并触发 SQL 查询:

select * from TABLE where COLUMN2 = "record"

可能只检索到一条记录或多条记录,并且这些记录要经过一些业务逻辑。

  1. 在 writer 中,我们将业务逻辑传递的所有记录(记录数将少于 1000 条)累积起来并插入到数据库中。

这里的问题:考虑该表存储了近 40 万条记录。

从文件中读取 1000 条记录时,需要几微秒。

在处理这 1000 条记录时(即在数据库中点击上述 SQL 查询 1000 次),需要 4 分钟来处理。

在写入数据库时​​(插入例如 100 条选定的记录),它需要几微秒。

在分析时,我发现表中只有主键列索引。我们正在使用的列 (column2) 不包含在索引列中。

请告知,添加列作为索引是否是更好的解决方案。

4

1 回答 1

2

select * from TABLE where COLUMN2 = "record"

请告知,添加列作为索引是否是更好的解决方案。

where是的,为您的子句中使用的列添加索引应该可以提高性能,在您的情况下,它是COLUMN2.

于 2020-07-06T11:49:14.380 回答