text
1 2
query.addCriteria(Criteria.where("time").regex(Pattern.compile(
       "^.*" + CommUtil.toString(queryParams.get("QueryTime")) + ".*$", Pattern.CASE_INSENSITIVE)));

这个是我之前用的模糊查询;利用 Pattern来拼接查询条件。

但是后来发现当数据达到一定的量的时候。这样全局去模糊的匹配,查询速率就会特别慢。

于是我们老大提出修改

text
1 2
query.addCriteria(Criteria.where("time").gte(CommUtil.toString(queryParams.get("timeQuery")) + " 00:00:00"));
query.addCriteria(Criteria.where("time").lte(CommUtil.toString(queryParams.get("timeQuery")) + " 23:59:59")); 

利用gte(大于等于)和了lte(小于等于)去做限制条件就不会去模糊匹配。

这样效率就会特别快。

原文地址:https://blog.csdn.net/qq_34926773/article/details/79694375?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168474996616800215094151%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168474996616800215094151&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-5-79694375-null-null.142^v87^control_2,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96