gpt4 book ai didi

Mongodb 查询不使用索引

转载 作者:可可西里 更新时间:2023-11-01 10:01:55 26 4
gpt4 key购买 nike

<分区>

我在 mongo 集合上设置了一个复合索引,无论我如何具体定位前缀,我都无法让查询使用它。

索引是如何创建的:

db.collection.createIndex({"insert_time":-1,"name":"text"},{background: true})

索引规范输出:

db.collection.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "db.collection"
},
{
"v" : 2,
"key" : {
"insert_time" : -1,
"_fts" : "text",
"_ftsx" : 1
},
"name" : "insert_time_-1_name_text",
"ns" : "db.collection",
"background" : true,
"weights" : {
"name" : 1
},
"default_language" : "english",
"language_override" : "language",
"textIndexVersion" : 3
}
]

但是当我在 insert_time 上运行最简单的查询时,explain() 向我展示了获胜的计划是执行 COLLSCAN,而不使用任何索引:

db.collection.find({"insert_time": ISODate("2018-08- 
05T19:00:00Z")}).explain()
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "db.collection",
"indexFilterSet" : false,
"parsedQuery" : {
"insert_time" : {
"$eq" : ISODate("2018-08-05T19:00:00Z")
}
},
"winningPlan" : {
"stage" : "COLLSCAN",
"filter" : {
"insert_time" : {
"$eq" : ISODate("2018-08-05T19:00:00Z")
}
},
"direction" : "forward"
},
"rejectedPlans" : [ ]
},
"serverInfo" : {
"host" : "foo",
"port" : 0000,
"version" : "3.4.10",
"gitVersion" : "078f28920cb24de0dd479b5ea6c66c644f6326e9"
},
"ok" : 1
}

即使索引被指定为“复合索引”,我的理解是我应该能够通过“前缀”进行搜索,在本例中,insert_time 是。关于为什么 mongo 不使用我的索引有什么想法吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com