• MongoDB OR 条件使用情况一(需要hint的情况)


    OR条件超过三个再和其他条件进行匹配 ,使用索引会发生改变:

    3个条件以内

    db.getCollection('var_stat').find({$and:[
    {'$or':[
    {'_id.chr':'7','_id.begin':143964266,'_id.refA':'A','_id.altA':'G'},
    {'_id.chr':'7','_id.begin':143964269,'_id.refA':'A','_id.altA':'G'},
    {'_id.chr':'7','_id.begin':143964268,'_id.refA':'A','_id.altA':'G'}
    ]}
    ,{'value.hSum.h1':{$gte:0}}]}).explain()

    正常使用索引

     

     超过3个条件,这里会进行全表扫描,查询超时,索引这里需要使用hint 强制使用 or里面需要的索引 

    db.getCollection('var_stat').find({$and:[
    {'$or':[
    {'_id.chr':'7','_id.begin':143964266,'_id.refA':'A','_id.altA':'G'},
    {'_id.chr':'7','_id.begin':143964269,'_id.refA':'A','_id.altA':'G'},
    {'_id.chr':'7','_id.begin':143964268,'_id.refA':'A','_id.altA':'G'},
    {'_id.chr':'7','_id.begin':143964267,'_id.refA':'A','_id.altA':'G'}
    ]}
    ,{'value.hSum.h1':{$gte:0}}]}).hint({'_id_':1,'_id.begin':1})
  • 相关阅读:
    常用JSR-303数据校验
    SpringBoot配置文件及自动配置原理
    SpringBoot自动装配原理
    Centos安装TensorFlow和Keras
    Batch梯度下降
    梯度下降法的注意点
    读取流量
    Linux开机启动服务
    Shell分割字符得到数组
    Linux下无图形界面安装Matlab
  • 原文地址:https://www.cnblogs.com/daxiongblog/p/12170233.html
Copyright © 2020-2023  润新知