根據方向的不同,我看到Spring Data MongoDB排序性能存在顯着差異。我正在對一個屬性進行排序,並在兩個方向上都有索引。排序升序時,響應時間大約爲80毫秒,排序時降序大約爲2.7秒。 原生查詢分別需要5毫秒和50毫秒。後續頁面的查詢速度更快,大約1秒。Spring Data MongoDB排序性能
2.7秒對我的應用程序是不可接受的,有什麼我可以做的嗎?
控制器:
String q = URLDecoder.decode(query);
Sort.Direction d = Sort.Direction.ASC;
if (direction == -1) {
d = Sort.Direction.DESC;
}
String[] properties = sort.split(",");
Sort s = new Sort(d, Arrays.asList(properties));
Pageable p = new PageRequest(page, size, s);
List<Employer> list = employerRepository.find(q, p);
庫:
@Override
public List<Employer> find(String query, Pageable page) {
Query q = new BasicQuery(query).with(page);
return mongoTemplate.find(q, Employer.class);
}
更新1:我已經啓用MongoDB的分析,以及本地和Spring數據查詢看起來相同。所以看起來瓶頸在mongoTemplate.find(q, Employer.class);
。
你有沒有嘗試把一個顯式的索引屬性?應該讓事情變得更快 - 我們目前正在調查,並有一個指數似乎大規模影響結果。 – 2014-10-23 09:35:25
謝謝,我嘗試添加'.withHint(「myindexname」)',它顯着提高了性能。令人驚訝的是(至少對我來說),當我再次移除它時,表現依然不錯。任何人都可以解釋嗎? – user3170702 2014-10-23 11:44:47