关于索引的深入疑问
来源:5-2 【索引】动手实战 - 索引的操作,效果和特性(上)

Charles_So_网页开发
2020-05-21
1、什么情况下需要重建索引reindex函数?
2、听说一种大多数人都会用的常规做法:对每个非数组字段都建一个索引,这是否合理?
3、新建一个复合键索引(字段name和age),和新建两个单键索引(name索引和age索引),对查询性能的提升作用是否一致?有什么区别?这种情况,貌似建两个单键索引会更灵活一些,适应性更强一些。
4、在日常工作中,搭建数据库需要在项目运作之前(开始插入数据)之前先建好索引吗?还是说可以先把数据库跑起来,后续遇到性能瓶颈再做索引优化。
写回答
1回答
-
Stannum
2020-06-18
同学好~抱歉最近忙到迟答你的问题... 你的问题较多,我尽量一个个答:
1. reindex函数非常耗费资源,一般情况下不建议使用,只在你真的确定需要重建所有文档的索引时才用,而且一般来说不建议在生产环境中使用
2. 建议你从用户怎样使用(查询)数据的角度出发,来设计数据库索引。对于关系型数据库,我们往往以数据为中心,根据数据表结构来设计查询方式。虽然你也可以用这种思维来使用mongodb,但我觉得这没有真正发挥nosql数据库的特性。建议你先了解用户/客户端是如何查询数据的,然后根据查询的条件来创建索引。这样能最大化索引的利用效率。比如已知客户端总是使用字段A+字段B的组合条件来查询数据,那么创建一个复合键索引就更合适。00
相似问题