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.
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 { '_id': '...', '_rev': '...', 'type': 'contract', 'ref': '065871', 'name': 'John Doe' }
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
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" ] } } } } }
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)
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 }
Existe t'il un meilleur moyen pour optimiser la requête ?
Merci
Partager