J'utilise le point final suivant pour voir quel est l'index étant choisi par cloudant pour aller chercher mes résultats:Cloudant Interrogation choisir le mauvais index
https://mydb.cloudant.com/mlslistings-temp/_explain
et est ici une requête exemple pour lequel mauvais index est choisi:
{
"sort": ["ListPrice"],
"limit":20,
"selector":{
"Street#":"1031",
"MLSStatus":{"$or":[{"$eq":"Active"}]},
"ListPrice":{"$gte":0},
"ParcelSizeAcres":{"$gte":0,"$lte":50}}
}
Tous les champs que vous voyez dans la requête sont des index basés json
. J'ai deux questions concernant la sélection d'index:
- Quel que soit le domaine que je mets comme le champ de tri se fait automatiquement sélectionné comme l'indice choisi. Cela aurait été bien, mais la plupart du temps ma requête va être
"ListPrice":{"$gte":0}
qui finit par faire un scan complet de la table puisque presque toutes les propriétés ont un prix supérieur à 0. - Si je supprime tous les champs de la requête et laisse juste
Street#
etParcelSizeAcres
dans la requête,ParcelSizeAcres
est sélectionné comme index mais c'est faux. Parce que lorsque j'exécute la requête avecStreet#
un total de 53 documents sont renvoyés alors queParcelSizeAcres
renvoie des centaines.
Ces sélections d'indices semblent aller à l'encontre Cloudant's Explain Plans