Hello,

J'ai dans mon couchdb, des documents de type "contract" (parmi d'autres type documents). J'ai au total environ 500k documents dans ma base et les type "contracts" représentent 10k documents.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
{
  '_id': '...',
  '_rev': '...',
  'type': 'contract',
  'ref': '065871',
  'name': 'John Doe'
}
Pour optimiser ma requete j'ai créé l'index suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
{
  "_id": "_design/type-contract",
  "_rev": "13-bd250dee53a0de36a7b7e01f403a6f80",
  "language": "query",
  "views": {
    "ref": {
      "map": {
        "fields": {
          "ref": "asc"
        },
        "partial_filter_selector": {
          "type": {
            "$eq": "contract"
          }
        }
      },
      "reduce": "_count",
      "options": {
        "def": {
          "partial_filter_selector": {},
          "fields": [
            "ref",
            "name"
          ]
        }
      }
    },
    "name": {
      "map": {
        "fields": {
          "name": "asc"
        },
        "partial_filter_selector": {
          "type": {
            "$eq": "contract"
          }
        }
      },
      "reduce": "_count",
      "options": {
        "def": {
          "partial_filter_selector": {},
          "fields": [
            "ref",
            "name"
          ]
        }
      }
    }
  }
}
lors de ma requête j'utilise l'index type-contract:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
  "selector": {
    "$and": [
      {
        "type": "contract"
      },
      {
        "ref": "000601"
      }
    ]
  },
  "sort": [
    {
      "name": "asc"
    }
  ],
  "use_index": "type-contract",
  "limit": 20,
  "execution_stats": true
}
Le problème c'est que la requête met beaucoup de temps à s'éxécuter (parfois 130 secondes) et qu'il m'affiche un warning dans le resultat de la requête : "The number of documents examined is high in proportion to the number of results returned. Consider adding a more specific index to improve this.." (total_docs_examined: 12422)

Existe t'il un meilleur moyen pour optimiser la requête ?

Merci