2017-06-08 3 views
0

ich den folgenden Endpunkt verwendet, um zu sehen, welcher Index von cloudant gewählt wird meine Ergebnisse zu holen:Cloudant Abfrage den falschen Index Auswahl

https://mydb.cloudant.com/mlslistings-temp/_explain 

und hier ist ein Beispiel Abfrage, für die falschen Index zu sein, ist gewählt:

{ 
"sort": ["ListPrice"], 
"limit":20, 
"selector":{ 
    "Street#":"1031", 
    "MLSStatus":{"$or":[{"$eq":"Active"}]}, 
    "ListPrice":{"$gte":0}, 
    "ParcelSizeAcres":{"$gte":0,"$lte":50}} 
} 

Alle Felder, die Sie in der Abfrage zu sehen sind json basierte Indizes. Ich habe zwei Fragen in Bezug auf Indexauswahl:

  • Unabhängig davon, welches Feld ich als Sortierfeld setzte automatisch als gewählten Index ausgewählt wird. Es wäre in Ordnung gewesen, aber meine Abfrage wird "ListPrice":{"$gte":0} sein, die endet, indem Sie den gesamten Tabellenscan durchführen, da fast alle Eigenschaften mehr als 0 Preis haben.
  • Wenn ich alle Felder in der Abfrage herausnehmen und nur Street# und ParcelSizeAcres in der Abfrage verlassen, wird ParcelSizeAcres als Index ausgewählt, aber das ist falsch. Da, wenn ich die Abfrage mit Street# ausführen insgesamt 53 Dokumente zurückgegeben werden, während ParcelSizeAcres Hunderte zurückgibt. Alle Ihre Indizes halten ein einzelnes Feld

scheinen diesen Index Auswahl gegen Cloudant's Explain Plans

Antwort

0

gehen zu werden. Soweit Cloudant betroffen ist, haben sie das gleiche Gewicht und gemäß der Dokumentation, auf die Sie sich beziehen, ist die Auswahl dann der erste verfügbare Index in lexikografischer Sortierreihenfolge, also im ersten Fall ListPrice und im zweiten Fall ParcelSizeAcres. Es scheint mit dem dokumentierten Verhalten übereinzustimmen.

Verwandte Themen