MongoDB查询性能问题

原型咖啡

我有一个联系人列表应用程序,该应用程序使用mongoDB来存储联系人,并使用java驱动程序与数据库进行交互。每个联系人都是其自己的文档,其中包含许多字段,包括GivenName,Surname和MiddleInitial。

我最近添加了150,000个其他联系人,这降低了性能。我为Surname / GivenName / MiddleInitial添加了一个索引(用于按姓氏排序和搜索),并为GivenName添加了一个索引(用于按GivenName搜索)。除少数情况外,这在很大程度上起到了帮助作用。所有搜索都是锚定在字符串开头的正则表达式(例如^ Ale。*)。

当按名字搜索时,以q,u,x或z开头的查询的执行速度明显慢于任何其他字母。按姓氏搜索时,第一个字母越接近z越慢。我还没有找到此类问题的其他示例。任何帮助表示赞赏。

编辑:

以下是索引:

collection.ensureIndex(new BasicDBObject("Surname",1).append("GivenName",1).append("MiddleInitial",1));
collection.ensureIndex(new BasicDBObject("GivenName", 1));

和查询:

BasicDBObject contactInfo = new BasicDBObject("GivenName", new BasicDBObject("$regex", "(?i)^al.*"); //GivenName may be Surname, al is just an example query

DBCursor cursor = collection.find(contactInfo).sort(new BasicDBObject("Surname",1).append("GivenName", 1).append("MiddleInitial", 1));

结果解释AZ上给定名称的位置

解释的结果对给定名称AZ排序没有在这里

逃避地

您正在执行不区分大小写的正则表达式搜索。几乎可以肯定,这将绕过您定义的所有索引。一种选择是使用一种将大小写复制到大写/小写的方式来存储字段两次,然后对它进行正则表达式查询。开始查询仍然可以使用索引,但是如果您忽略这种情况,则不能使用索引。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB查询性能问题

来自分类Dev

递归查询性能问题

来自分类Dev

LINQ查询的性能问题

来自分类Dev

MongoDB:查询性能下降

来自分类Dev

MongoDB性能问题

来自分类Dev

性能查询问题-Oracle

来自分类Dev

查询中的MySQL性能问题

来自分类Dev

简单查询中的性能问题

来自分类Dev

MongoDB与MySQL性能-简单查询

来自分类Dev

如何提高 mongoDb 查询性能?

来自分类Dev

MongoDB Batch更新性能问题

来自分类Dev

SQL查询性能问题全表扫描

来自分类Dev

简单选择查询的MySQL性能问题

来自分类Dev

聚合查询的MySQL View性能问题

来自分类Dev

SQL查询性能问题全表扫描

来自分类Dev

星号cdr mysql查询性能问题

来自分类Dev

如何识别性能问题查询 - MYSQL

来自分类Dev

使用数学计算查询的性能问题

来自分类Dev

如何提高MongoDB聚合查询的性能?

来自分类Dev

如何调试 MongoDB 查询以提高性能

来自分类Dev

MongoDB批处理更新性能问题

来自分类Dev

更新后的SpringData MongoDB性能错误/问题

来自分类Dev

MongoDB群集中的写入性能问题

来自分类Dev

Unity游戏中的MongoDB性能问题

来自分类Dev

我的带有子查询的MYSQL查询的性能问题

来自分类Dev

MongoDB聚合查询问题

来自分类Dev

参数化Linq to SQL查询会导致性能问题

来自分类Dev

NHibernate和SQL查询性能问题:存储过程与本机SQL

来自分类Dev

将MDX转换为DAX查询时的性能问题