boot+MongoTemplate,count方法带上条件非常慢,全文索引字段查询也会很慢,求解

咖啡加糖 发布于 08/04 16:04
阅读 425
收藏 0

【深度】AI、5G时代下,算力网络与内生安全最全解析!>>>

先上代码:
     


数据量大概在1600W左右,

情况1:不加任何条件的情况下
count总数:16907883
count运行时间:4ms
find总数:10
find运行时间:8ms
all运行时间:13ms  

情况2:加上时间段条件的情况下  

MongoDB find start Query: { "$and" : [{ "createTime" : { "$gte" : { "$date" : 1595952000000}}}, { "createTime" : { "$lte" : { "$date" : 1596470400000}}}]}, Fields: {}, Sort: {}


count总数:10993965
count运行时间:22470ms
find总数:10
find运行时间:9ms
all运行时间:22482ms

说明: createTime字段是加了索引的

情况3: 根据全文索引查询,结果数据较少的情况
MongoDB find start Query: { "$text" : { "$search" : "111"}}, Fields: {}, Sort: {}

count总数:53
count运行时间:153ms
find总数:10
find运行时间:6ms
all运行时间:161ms


情况4: 根据全文索引字段查询,数据较多的情况(几乎上千万)
 
MongoDB find start Query: { "$text" : { "$search" : "1"}}, Fields: {}, Sort: {} 

等待实在太长,不统计了



疑问:
       1、count方法在加上条件时非常耗时,因为没走索引??
            因为是时间段查询 所以使用了如下方式进行条件拼装,
            criteria.andOperator(
                    criteria.where(filedBtwBegin.replace("_begin","")).gte(filedBtwBeginValue),
                    criteria.where(filedBtwEnd.replace("_end","")).lte(filedBtwEndValue)
            );
       2、集合中加了全文索引字段,在查出大数据量是非常慢,有什么方法可以优化??全文索引已经生效了,通过全文索引的规则能查询出数据,但是就是很慢

       3、因为项目做了分页,所以如果数据量很大,当点到最后一页时,有时非常非常卡,但是这个和count方法无关了,而且分页查询慢



请教各位指点,谢谢

加载中
0
大魔大天王
大魔大天王

mongodb 聚合函数使用一直是一个坑,到现在为止没找到好的解决办法

咖啡加糖
咖啡加糖
回复 @大魔大天王 : 但是count()方法如果不带查询条件,就很快,也是毫秒级的
咖啡加糖
咖啡加糖
回复 @大魔大天王 : 额 这就尴尬了,目前就是count取总记录数和分页点击最后一页比较慢,分页的话也考虑前端处理不让客户直接点到最后的页面,但是这个count好像不走索引,难搞
大魔大天王
大魔大天王
mongodb 现在适合精确查询,如果有准确的条件加上索引, 亿级的数据,查询速度都是毫秒级 ,代价就是聚合函数的薄弱,传统的分页基本没法使用, 但是类似那种上一页,下一页分页用起来体验还可以(百度,谷歌) ,但是不能查询总数,
返回顶部
顶部