V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
coderabbit
V2EX  ›  MongoDB

mongo 索引不懂就问!这种索引如何建好!

  •  
  •   coderabbit · 2020-04-26 12:41:51 +08:00 · 4466 次点击
    这是一个创建于 1670 天前的主题,其中的信息可能已经有所发展或是发生改变。

    mongo 查询语句

    db.t_policy.find({
    		$or: [{$and:[{"policy_no": "31809341900153386520"}]}, {"bill_date": "", "effective_date": "", "engine_no": "", "expire_date": "", "first_register_date": "", "license_plate_no": "", "model": "", "vin": ""}]
    	})
    

    搜索条件某些字段有,某些字段可能没得,是建立单个索引,还是建议集合的索引,集合索引是不是有时命中不到呀。如果不建索引 cpu 猛升。没有这方面经验问问大家!

    4 条回复    2020-04-27 10:27:33 +08:00
    NoBugDie
        1
    NoBugDie  
       2020-04-26 12:51:31 +08:00
    稀疏索引???
    libook
        2
    libook  
       2020-04-26 13:18:03 +08:00
    你把业务上会出现字段组合的情况都列出来,一一建索引就行了,但如果情况不可控,比如若干字段的所有组合情况都有的话,建议上搜索引擎,比如 Elasticsearch 。
    thinkmore
        3
    thinkmore  
       2020-04-27 10:25:51 +08:00
    可以参考下我的这篇文章: https://juejin.im/post/5e99136d51882573c508e278

    有些字段没有你可以建立部分索引(它是稀疏索引的超集)。 然后根据你常用的查询来建立索引,用 explain 分析下。

    索引建立原则,ESR(equal, sort, range)
    thinkmore
        4
    thinkmore  
       2020-04-27 10:27:33 +08:00
    从你的 query 来看,至少 要有一个 policy_no 的索引。 后面哪些字段区分度比较高就再添加哪个字段
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3322 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:58 · PVG 19:58 · LAX 03:58 · JFK 06:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.