天天看點

java mongodb模糊查詢優化

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

這個是我之前用的模糊查詢;利用 Pattern來拼接查詢條件。

但是後來發現當資料達到一定的量的時候。這樣全局去模糊的比對,查詢速率就會特别慢。

于是我們老大提出修改

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(小于等于)去做限制條件就不會去模糊比對。

這樣效率就會特别快。