问题标签 [compound-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
983 浏览

mongodb - 当某些字段可以为空或字符串数​​组时添加复合索引

我有一个 mongodb 集合。

我想在字段p1, p2,上创建一个索引p3。我的文档可能没有p2p3。我应该如何创建我的索引?

0 投票
1 回答
610 浏览

performance - MongoDB 中的复合索引是否改进了多重匹配(不是排序)?

文档似乎有点不清楚。

1)它明确指出复合索引确实提高了多字段排序的性能(依赖于顺序和方向)。

2)有一句话让我觉得它也会提高多字段MACH(sql类比:a=1 and b=2 and c<5)

https://docs.mongodb.org/v3.0/tutorial/optimize-query-performance-with-indexes-and-projections/

如果查询搜索多个字段,请创建复合索引。

它没有说明排序。

那么字段 a、b、c 的复合索引是否比三个单字段索引(其中 a=1 和 b=2 和 c<5)的查询更适合匹配性能?

0 投票
3 回答
21654 浏览

mongodb - 复合索引的顺序在 MongoDB 性能方面有何影响?

我们需要以与查询参数相同的顺序创建复合索引。这个顺序对性能有影响吗?

想象一下,我们有一个地球上所有人类的集合,其索引为sex(99.9% 的时间为“男性”或“女性”,但仍然是字符串(不是二进制))和一个索引为name.

如果我们希望能够选择某个特定sexname所有人,例如所有名为“John”sex的“男性”,那么使用first 还是first的复合索引更好name?为什么不)?

0 投票
1 回答
1748 浏览

mongodb - MongoDB向复合索引添加低基数字段?

读过在低基数字段 放置索引是没有意义的。这对于这样的复合索引是否成立:

使用这样的查询:

distinct 的数量object_type会随着时间的推移而增长(可能最多不超过 10 或 20),但一开始只会有 2 或 3 个左右。

同样,哈希索引是否值得研究?

更新

owner并且target会大大增长。把它想象成一个文件系统,其中owner将“拥有”一个target(即文件)。但是,像 unix 系统一样,文件可以是文件夹、符号链接或常规文件(因此是类型)。因此,尽管只有 3 object_type,但 aownertarget组合可能有数千个类型分布均匀的条目。

0 投票
1 回答
120 浏览

rethinkdb - 使用多个 .contains() 进行 RethinkDB 索引查询

我有以下查询可以正常工作但速度很慢,但是我无法弄清楚如何正确索引它:

我尝试使用以下索引(使用 Thinky.js):

然后查询它我试过这个:

消息表如下所示:

但我最终得到零结果。我非常感谢任何建议!

0 投票
1 回答
30 浏览

mongodb - 索引 OR AND 查询 MongoDB

我的数据库中有一个 requests 表,其中包含几个字段,例如“pending”表示请求是否未得到服务,“expiry”表示以毫秒为单位跟踪过期时间(Epoch),“count”表示每次触发请求时倒计时到 0。

现在我搜索请求已过期或计数已降至 0 且待处理为真的所有请求。然后我根据到期时间订购结果。

我确实尝试为此创建一个索引,但根据我的 explain() 命令的结果,我确信 MongoDB 没有使用该索引。关于这种查询的复合索引应该是什么的任何建议?

通俗地说,查询本质上是 (A OR B) AND C 由 C 排序

那是我通过 Morphia、Java 构建的查询(我是 MongoDB 新手)->

0 投票
1 回答
1010 浏览

mongodb - 如何在 MongoDB 中存储增量数据?

我在各种收藏中拥有数百万份文件。

我的应用程序必须定期将一些增量数据更新到 MongoDB。我如何实现这一目标?

对于增量数据中的每条记录,如果记录存在,则必须使用新值对其进行更新,否则必须插入。

假设上面是我的数据, lifnr 和 bukrs 作为具有唯一约束的复合索引。{lifnr & bukrs} 值与任何现有值相同的任何新记录都应替换旧记录。如果它是唯一的 {lifnr & bukrs} 的新记录,那么它必须插入/附加它。

指导我的方法。谢谢

0 投票
0 回答
38 浏览

arrays - 如何通过MongoDB中的两个及更多数组字段来提高查询性能?

我收集了具有多个数组字段的对象。就像是:

如何优化下一个查询?

复合索引不能有多个数组字段。如果我将数组字段中的所有数据复制到新字段中searchArray并添加仅包含此数组的复合索引会有帮助吗?这是好方法吗?

0 投票
3 回答
63 浏览

mysql - 使用覆盖索引优化查询

我有以下带有子查询和自联接的查询:

我对此定义了以下索引:

当我查看使用 EXPLAIN 的查询时,使用覆盖索引 idx_bucket 的子查询肯定是优化的,但自连接和 where 子句没有。此外,为什么它只报告patient_sidandattribute_id用于used_key_parts而 anattachment_condition显示为lft, rgt(这是什么意思?)。和 ' rgt`lft都只是定义为没有特殊属性的整数,那么为什么不在我的覆盖索引中使用它们呢?

更奇怪的是当我定义

patient_sid注册在used_key_parts.Furthermore filtereddrop to 1.60%from 11.00%

0 投票
1 回答
382 浏览

mongodb - 复合索引的密钥长度

我希望将 MongoDB 2.4.x 实例升级到 2.6。作为此过程的一部分,我运行了该db.upgradeCheckAllDBs()方法以确保我的数据处于正确的升级状态。此检查在我的数据库中发现了许多记录,它们在字段上定义了索引,但键超过了 1024 字节的限制。也就是说,我看到了以下形式的错误:

指示该文档在field字段中包含超过 1024 字节(键的限制)的值。

这很容易解决(我可以删除 上的那个索引field),但是复合索引呢。例如:假设我有一个如下索引:

这是否意味着文档的emailmeta字段的长度超过了 1024 字节?或者每个字段是 1024 字节,还是其他组合?即对于复合索引,如何判断key长度超过了1024字节的限制?