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

2020-04-26 12:41:51 +08:00
 coderabbit

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 猛升。没有这方面经验问问大家!

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

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

索引建立原则,ESR(equal, sort, range)
thinkmore
2020-04-27 10:27:33 +08:00
从你的 query 来看,至少 要有一个 policy_no 的索引。 后面哪些字段区分度比较高就再添加哪个字段

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/666235

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX