ThingWorx Modelldefinition in Composer > Datenspeicher > Wert-Streams > Dienst QueryDataTableEntries und QueryStreamEntriesWithData verwenden
Dienst QueryDataTableEntries und QueryStreamEntriesWithData verwenden
Der Dienst QueryDataTableEntries fragt die Datentabellen ab und gibt eine Infotable mit Datensätzen zurück, die den Anforderungsparametern entsprechen. Die Verwendung nicht optimierter Datenabfragen in ThingWorx kann zu Leistungsproblemen und sogar Systemausfällen führen.
Sehen Sie sich die folgenden Beispielszenarios an, um zu verstehen, wie dieser Dienst funktioniert.
Beispielszenarios
Szenario 1: Der Abfragefilter wird immer im Arbeitsspeicher auf ThingWorx Platform angewendet, er wird jedoch nie von der SQL-Anweisung verwendet.
var query = {
"filters": {
"type": "EQ",
"fieldName": "firstname",
"value": "Doe"
}
};
var result = Things["myDataTable"].QueryDataTableEntries({query: query})
Der Code oben ruft die gesamte Datentabelle aus der Datenbank ab, und der Filter wird dann im Arbeitsspeicher auf ThingWorx Platform angewendet.
Dieses Szenario gilt für: QueryDataTableEntries, QueryStreamData, QueryStreamEntries und QueryStreamEntriesWithData.
Alternative Szenarios: Datentabelle mit Verwendung der Werteparameter auf FindDataTableEntries und QueryDataTableEntries.
Szenario 2: Der Parameter maxItems im Dienst QueryDataTableEntries wird im Arbeitsspeicher auf ThingWorx Platform angewendet, er wird nicht von der SQL-Anweisung verwendet.
var result = Things["myDataTable"].QueryDataTableEntries({maxItems: 1 });
Der Code oben ruft die gesamte Datentabelle aus der Datenbank ab, und der Grenzwert wird dann im Arbeitsspeicher auf ThingWorx Platform angewendet.
Das Verhalten unterscheidet sich für die Stream-Abfrage-API. Weitere Informationen sind im Szenario 3 unten zu finden.
Szenario 3: maxItems in Stream-Abfragedienste wird im Arbeitsspeicher auf ThingWorx Platform angewendet, wenn dies in Verbindung mit dem Abfragefilter verwendet wird (immer im Arbeitsspeicher für Datentabellen, siehe Szenario 2).
var query = {...};
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, query: query});)
Der Code oben ruft den gesamten Stream aus der Datenbank ab.
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, source: "myThing"});
Der Code oben ruft nur einen Datensatz aus der Datenbank ab, da der Abfrageparameter nicht verwendet wird.
War dies hilfreich?