我有一个联系人列表应用程序,它使用mongoDB来存储联系人,并使用java驱动程序与数据库进行交互。每个联系人都是自己的文档,包含多个字段,包括GivenName、Surname和MiddleInitial。我最近添加了150,000个额外的联系人,这降低了性能。我为Surname/GivenName/MiddleInitial添加了一个索引(用于按姓氏排序和搜索)和一个用于GivenName的索引(用于按GivenName进行搜索)。除少数情况外,这在很大程度上有所帮助。所有搜索都是固定在字符串开头的正则表达式(例如^Ale.*)。按名字搜索时,以q、u、x或z开头的查询执行速度明