Composer 中的 ThingWorx 模型定義 > 資料儲存 > 值串流 > 使用 QueryDataTableEntries 與 QueryStreamEntriesWithData 服務
使用 QueryDataTableEntries 與 QueryStreamEntriesWithData 服務
QueryDataTableEntries 服務會查詢資料表,並傳回符合請求參數之記錄的資料負載。在 ThingWorx 中使用非最佳化的資料查詢可能會導致效能問題,甚至導致系統中斷。
欲瞭解此服務的運作方式,請參閱以下範例情境。
範例情境
情境 1:查詢篩選器始終在 ThingWorx Platform 的記憶體內套用,SQL 陳述式絕不會使用它。
var query = {
"filters": {
"type": "EQ",
"fieldName": "firstname",
"value": "Doe"
}
};
var result = Things["myDataTable"].QueryDataTableEntries({query: query})
上述程式碼會從資料庫擷取整個資料表,然後在 ThingWorx Platform 的記憶體內套用篩選器。
此情境適用於:QueryDataTableEntriesQueryStreamDataQueryStreamEntriesQueryStreamEntriesWithData
替代情境:使用 FindDataTableEntriesQueryDataTableEntries 中值參數的資料表
情境 2:QueryDataTableEntries 服務中的 maxItems 參數在 ThingWorx Platform 的記憶體內套用,SQL 陳述式不會使用它
var result = Things["myDataTable"].QueryDataTableEntries({maxItems: 1 });
上述程式碼會從資料庫擷取整個資料表,然後在 ThingWorx Platform 的記憶體內套用限制。
串流查詢 API 的行為不同。如需詳細資訊,請參閱下面的情境 3。
情境 3:與查詢篩選器搭配使用時,會在 ThingWorx Platform 的記憶體內套用串流查詢服務中的 maxItems (針對資料表,始終位於記憶體內,請參閱情境 2)
var query = {...};
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, query: query});)
上述程式碼會從資料庫擷取整個串流。
var result = Things["myStream"].QueryStreamEntriesWithData({maxItems: 1, source: "myThing"});
由於未使用 query 參數,因此上述程式碼只會從資料庫擷取一個記錄。
這是否有幫助?