标题几乎总结了我在这里寻找的东西。
我正在尝试使用Spring CrudRepository#delete(Iterable<T> batch)
,JPADeleteClause
或entities.forEach(e->deleteClause.where(event.id.eq(e.getId())));
从MySQL中删除&gt; 500000行,并详尽地创建&gt; 500000删除语句。
in
或通过Lists.partition(events, MAXIMUM_PACKET_SIZE).forEach(
packet->deleteClause.where(event.id.in(packet.stream()
.map(Event::getId)
.collect(
Collectors.toList())))
.execute()
);
子句
ContentValues
由于MySQL本身的阈值,其中一些方法失败了
N字节的内存容量 超出'range_optimizer_max_mem_size'。范围 没有为此查询进行优化。
用于查询的数据包太大(4895385&gt; 1048576)。您可以通过设置max_allowed_packet'变量来更改服务器上的此值。
而最终成功的人非常耗时。
关于这种情况,是否有最佳实践?
我主要是寻找一种不会影响任何现有MySQL配置的方法。这是因为至少就MySQL服务器配置而言,我正在寻找最不普遍的解决方案。