1

Ich weiß, dass die Datenspeicher-Preiskontingente für jede Abfrage auf der Anzahl der abgerufenen Entitäten basieren. Nun, wenn ich schreibe, mit objektivieren, eine Abfrage wie diese oder eine ähnliche:Wie viele Entitäten ich bezahle, wenn ich die objectify first() -Methode in Datenspeicherabfragen verwende

Car car = ofy().load().type(Car.class).filter("vin >", "123456789").first().now(); 

muss ich für jeden Rechtsträger zahlen, die vin> 123456789 von der Abfrage ausgewählt hat oder nur für die erste, die ich bin tatsächlich abrufen?

Antwort

2

Der Datenspeicher-Dokumentation auf Indizes sagt dies:

  1. den Index der Abfrage Art entsprechenden Identifiziert, filtern Eigenschaften, Filteroperatoren und Aufträge sortieren.
  2. Scannt vom Anfang des Index bis zur ersten Entität, die alle Filterbedingungen der Abfrage erfüllt .
  3. weiterhin das Scannen des Index, jede Entität wiederum zurückkehrt, bis es
    • trifft eine Einheit, die nicht die Filterbedingungen erfüllt, oder
    • erreicht das Ende des Index oder
    • gesammelt die maximale Anzahl von Ergebnissen, die von der Abfrage angefordert wurden.

(Quelle documentation)

Da die maximale Anzahl der von der Abfrage angeforderten Ergebnisse 1 nur ein Index mit einem einzigen Lese scannen, die Sie für in Rechnung gestellt würde.

Beachten Sie, dass die Indizes geordnet sind, daher wäre dies ein sehr kurzer Index-Scan und ein wirklich kleiner Vorgang.

Auf der anderen Seite geben Sie keine Reihenfolge in der Abfrage an. Technisch gesehen könnte das Ergebnis jede Entität sein, die Ihre Abfrage qualifiziert. Normalerweise möchten Sie den größten oder kleinsten Wert innerhalb des Qualifying-Bereichs. Da Indizes geordnet sind, sollten Sie die erste Entität in Ihrem Index abhängig von der Indexreihenfolge (aufsteigend oder absteigend) abrufen.

+0

Aber, wenn Indizes geordnet sind, würde die Suche nach der ersten nicht auf die erste Entität stoßen, die direkt über der Filterleiste liegt? Wenn dies nicht der Fall ist, wie kann ich den Abfragefilter weiter so festlegen, dass er sich so verhält? – Matt

+0

Ich glaube, Sie müssten eine '.order (" - vin ")' hinzufügen. Die Frage ist, ob dies einen zusätzlichen Index erfordert. – konqi

Verwandte Themen