RethinkDB-Index für Filter + orderby

7

Nehmen wir an, eine Kommentare Tabelle hat die folgende Struktur:

%Vor%

Ich möchte den Index für die effiziente Ausführung der folgenden Abfrage verwenden:

%Vor%

Gibt es andere effiziente Methoden, die ich verwenden kann?

Es sieht so aus, als ob der aktuelle Index für ein gefiltertes Ergebnis einer Tabelle nicht unterstützt wird. Wenn ich einen Index für timestamp erstelle und ihn als Hinweis in orderBy('timestamp', {index: timestamp}) hinzufüge, bekomme ich folgenden Fehler:

  

RqlRuntimeError: Indexed order_by kann nur für eine TABLE ausgeführt werden. in:

    
Robert Zaremba 02.11.2013, 21:41
quelle

4 Antworten

12

Dies kann mit einem zusammengesetzten Index in den Feldern "author" und "timestamp" erreicht werden. Sie können einen solchen Index wie folgt erstellen:

%Vor%

Dann können Sie es verwenden, um die Abfrage wie folgt auszuführen:

%Vor%

Die zwischen Arbeiten wie die get_all hat in Ihrer ursprünglichen Abfrage getan, weil es nur Dokumente erhält, die den Autor "mich" und einen beliebigen Zeitstempel haben. Dann machen wir einen order_by auf dem gleichen Index, der nach dem Zeitstempel sortiert (da alle Schlüssel den gleichen Autor haben). Der Schlüssel hier ist, dass Sie nur einen Index pro Tabellenzugriff verwenden können, also müssen wir alle diese Informationen in einfügen der gleiche Index.

    
Joe Doliner 03.11.2013, 02:45
quelle
4

Derzeit ist es nicht möglich, eine getAll mit einer orderBy mit Indizes zweimal zu verketten. Bestellen mit einem Index kann jetzt nur auf einer Tabelle erfolgen.

Hinweis: Der Befehl für orderBy mit einem Index lautet orderBy({index: 'timestamp'}) (der Schlüssel muss nicht wiederholt werden)

    
neumino 03.11.2013 01:29
quelle
2

Die Antwort von Joe Doliner wurde ausgewählt, scheint mir aber falsch.

Erstens wurde im Befehl between kein Indexer angegeben. Daher wird between den primären Index verwenden.

Zweitens gibt between eine Auswahl zurück

%Vor%

und orderBy können nicht bei der Auswahl mit einem Index ausgeführt werden, nur die Tabelle kann index verwenden.

%Vor%     
kureikain 13.08.2015 07:00
quelle
1

Sie möchten einen so genannten "zusammengesetzten Index" erstellen. Danach können Sie es effizient abfragen.

%Vor%

Ich verwende gerne zwei Unterstriche für zusammengesetzte Indizes. Es ist nur stilistisch. Es spielt keine Rolle, wie Sie Ihren zusammengesetzten Index benennen.

Referenz: Wie getall mit orderby in verwenden RethinkDB

    
williamle8300 13.09.2016 17:02
quelle

Tags und Links