我有以下疑问:
{
"selector":{
"lastname":{
"$regex":"(?i)[cç][oòóôõöø]"
},
"firstname":{
"$gt":null
},
"type":"person",
"owner":{
"$in":["admin"]
}
},"sort":["lastname","firstname"]
}
又试了许多索引:
{
"type": "json",
"def": {
"fields": [
{
"lastname": "asc"
}
]
}
}
{
"type": "json",
"def": {
"fields": [
{
"lastname": "asc"
},
{
"firstname": "asc"
}
]
}
}
{
"type": "json",
"def": {
"fields": [
{
"lastname": "asc"
},
{
"firstname": "asc"
},
{
"type": "asc"
},
{
"owner": "asc"
}
]
}
}
但是没有一个工作。FYI我用的是CouchDB 2.1.0。
我还尝试将"sort":["lastname","firstname","type","owner"]
添加到查询中,但仍然收到警告:no matching index found, create an index to optimize query time
我做错了什么?
编辑:我使用PouchDB直接到我的CouchDB服务器(没有同步),如果这可以帮助...
2条答案
按热度按时间roejwanj1#
您以前创建过索引吗?
并将其用于您的。找到比
use_index: 'my-index-design-doc'
?0qx6xfy62#
顺便说一句,请记住,在大型数据库中,查询对性能的影响将是巨大的。操作符$in和$regex将在内存中处理整个数据库,因为它不使用任何索引--至少在最新的CouchDB版本中也不能使用索引:3.0.2.
另一方面,$eq,$gt - $gte,$lt - $lte将在不处理所有数据的情况下进行索引。这就是它的巧妙之处。