我在Java服务器上使用ORMlite和H2数据库。我有一个450k行的数据集。我有以下分布:
从0到300k:每第300行的状态为1
从300k到420k:每50行的状态为1
其他行的状态为2.因此,总共约10900行的状态为1,其他行的状态为2。 请注意分发是近似的,因此SQL查询不能依赖上面的数字。
然后我需要选择最后8k行,它没有状态2.我尝试了以下内容:
首先按时间顺序创建行,然后使用限制函数查询8k行:
SELECT * FROM `table_name` WHERE `Status` <> 2 LIMIT 0,100000
queryBuilder.orderBy('time_saved', false);
queryBuilder.limit(8000L);
此解决方案的问题是,检索所有元素需要很长时间:大约6秒。大部分时间都采用此顺序功能:所有处理约2秒,订购约4秒。
所以我想知道,是否有其他解决方案,可以更好地解决这个问题。我知道我可以设置QueryBuilder的偏移量来提高性能,但我不知道这个偏移的起始编号。
提前谢谢。
P.S。不幸的是,我对ORMLite没有多少经验,所以任何支持链接都将受到赞赏。谢谢。