作为项目查询优化的一部分,我正在考虑用match all filter替换日期范围过滤器(缓存并返回所有内容,如全部匹配)。我想知道这是否会提高性能?
我的假设是在执行时系统会忽略这个过滤器,我可以改进内存使用(删除缓存过滤器)以及一些执行时间。这是对的吗?
答案 0 :(得分:1)
如果此过滤器匹配大多数或所有记录,则删除它绝对是一个很好的优化。但是,内存优势可能比您预期的要小,因为匹配所有记录的过滤器已经过优化。
答案 1 :(得分:0)
深入研究弹性1.7的源代码,我找到了答案 -
Match_All过滤器具有大小为int 的RAM使用率,并且它只是返回maxdocId 参数大小的位集(即记录数)。 没有要求缓存这是一个额外的加分点。
这个位集应该与范围过滤器生成的位集相同,假设所有记录都具有应用了范围的字段(对我来说就是这种情况)。
注意:imotov提供的答案是一个起点,但我要添加我的完整细节。
参考文献: