问题是这样地~
为了简化假设现有一个产品表这个表有3个字段分别是
id endDate state
需求是:
1、通过分页来显示所有 state = '1' 的产品。('1'=发布状态, '0'=为下线状态)
2、在读取的过程中,首先需要通过判断 endDate 时间(其实是用现在的时间来比较下线的时间来判断是否过期),以此决定是否需要更改 state 的值。
---------------------------------------------------------
问题就出来了,首先我们先分析下:
首先分页这不难,只要设置 setFirstResult 和 setMaxResults 就行了
但是更新要怎么办呢?一般情况下可以通过先 update...... 来跟新全部产品数据的 state 值后,再读取所有产品数据,但是如果产品表比较庞大,那这种方式显然不太人性,那么采用什么方法来更新 state 值比较好呢?
------解决方案--------------------------------------------------------
产品表比较庞大是有多庞大?
如果足够大,就按时间来进行分区,不是很大就按 年月 分区;真的很大就按 天 来分区。
指定分区的update,性能还是可以的。
如果数量级只有 百万以下,那么可以直接在endDate上建立索引;
有索引情况下,带上where条件,每天晚上凌晨2点批处理执行 update,效率不会太差的。