我有一个由QueryDSL根据UI的用户输入创建的动态查询。数据库表有大约400万条记录。实体是一个没有关联或连接的简单实体。它包含大约56个属性。
代码:
@Inject
QEntityRepository qEntityRepository;
.
.
.
BooleanBuilder builder = new BooleanBuilder();
builder.and(qEntity.firstProperty.containsIgnoreCase(firstProperty));
and so on......
qEntityRepository.findAll(builder, new PageRequest(pageable.getPageNumber(), Integer.valueOf(itemPerPage),sort));
另请注意,如上所示,我正在搜索“LIKE”时花费更多时间。但我必须根据业务需求搜索LIKE。
根据日志创建SQL查询后,它就被挂起了。我正在使用Ehcache和查询缓存,但没有任何改进。我正在使用HikariCP进行池管理。 DB Table也使用单个索引编制索引,用户可以在UI上放置所有4个参数。
任何建议都将受到赞赏。