簡體   English   中英

Azure CosmosDb ru 在 SQL API 查詢中的計算

[英]Azure CosmosDb ru's Calculation in SQL API Query

我有一個包含 ~ 10000 個文檔的集合,我已經觸發了 SQL 查詢來檢查 Ru 的計算,這個查詢是針對不同狀態的儀表板計數。

       {
        "entityType": "vehicleStatus",
        "vehicleCheckInId": "8cd93887-ce34-4b1d-87f6-2f36723319a8",
        "email": "bsellarbn@instagram.com",
        "tag": 420,
        "vin": "1C3BC2FB6BN851962",
        "phoneNumber": "549-357-1195",
        "customerName": "Bambie",
        "facilityId": "7f8663b4-5270-4259-ad33-6646ec33cd42",
        "vehicleId": "427c6d23-eb65-40cd-b8fa-f0159063509f",
        "facilityName": "Abc Service Center",
        "roNumber": "RO70-527-0925",
        "vehicleDetail": [
            {
                "make": "Subaru",
                "model": "Outback",
                "trim": "05-387-2180",
                "year": 2018,
                "colorCode": "#6bbede"
            }
        ],
        "advisor": [
            {
                "id": "35d55e01-fbb7-4752-8423-3859f0d46bde",
                "name": "Abc"
            }
        ],
        "techinician": [
            {
                "id": "480b8d19-fc1a-42df-a1e0-d70b35f4d8fb",
                "name": "Bcd"
            }
        ],
        "subQueue": [
            {
                "id": 3,
                "queueId": 2,
                "quoteId": "e9e1e0a1-e905-484b-9b32-638f3601bee5",
                "primaryfacilityId": "null",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 5,
                "queueId": 2,
                "quoteId": "cbf47904-4549-40bd-9788-c67de5a3da33",
                "primaryfacilityId": "null",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 7,
                "queueId": 3,
                "quoteId": "4d6f6d6e-f97d-4875-80bc-0d6f255715a3",
                "primaryfacilityId": "null",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 8,
                "queueId": 3,
                "quoteId": "903aeb55-21ef-402f-83d1-3f10c3887cb8",
                "primaryfacilityId": "null",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 14,
                "queueId": 5,
                "quoteId": "060c51a1-31df-4169-bfe7-1270c88a328b",
                "primaryfacilityId": "null",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 15,
                "queueId": 5,
                "quoteId": "92494165-2eee-47dc-9da0-84dd2e5bbe73",
                "primaryfacilityId": "null",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 16,
                "queueId": 5,
                "quoteId": "8a73e5e7-5f8a-4be7-bd8f-5f99c2328f68",
                "primaryfacilityId": "c3851f80-0625-46bb-8c3c-78f1418e4caf",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 17,
                "queueId": 5,
                "quoteId": "8b517315-d754-4f04-bcf0-b74958f311ed",
                "primaryfacilityId": "c3851f80-0625-46bb-8c3c-78f1418e4caf",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 9,
                "queueId": 4,
                "quoteId": "65056abd-573c-4ede-826d-3c7a9aeeaba7",
                "primaryfacilityId": "c3851f80-0625-46bb-8c3c-78f1418e4caf",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 11,
                "queueId": 4,
                "quoteId": "96d73845-2ba8-4327-b0cc-7580b764f3da",
                "primaryfacilityId": "c3851f80-0625-46bb-8c3c-78f1418e4caf",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 10,
                "queueId": 4,
                "quoteId": "2f24e83d-3cf6-42c9-b50a-4d1a5e68f1f4",
                "primaryfacilityId": "c3851f80-0625-46bb-8c3c-78f1418e4caf",
                "isLatest": "false",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            },
            {
                "id": 12,
                "queueId": 4,
                "quoteId": "04e0142b-ff21-46ca-8346-3e557bd0ba79",
                "primaryfacilityId": "c3851f80-0625-46bb-8c3c-78f1418e4caf",
                "isLatest": "true",
                "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c"
            }
        ],
        "createdDate": "2019-12-24 21:57:54",
        "deletedDate": "null",
}
**Query :** 
SELECT q.queueid,q.id 
FROM c JOIN q IN c.subQueue 
where c.entityType='vehicleStatus' 
and c.facilityId='7f8663b4-5270-4259-ad33-6646ec33cd42' 
and q.queueid=4 and q.id=12 and q.isLatest='true'

執行此查詢后,我注意到的 Ru 是 1200 Ru,這對我來說非常高,而且花費更多,我需要優化查詢或文檔以實現較低的 RU 消耗,但如何做到這一點,因為在此文檔中的狀態是積極更新,我需要提高應用程序的性能,有什么方法可以優化查詢或任何其他解決方案。

謝謝

不得不說,提高查詢性能的方法很多,但沒有一種直接的方法可以幫助您降低成本而不損失。畢竟,您必須實現您的業務需求的基礎。

正如上面的文檔所說:與這些操作中的每一個相關的成本根據完成操作所需的 CPU、IO 和內存而有所不同,這意味着每個 sql 成本都有意義。

我建議您嘗試在特定屬性上添加一些索引。此外,請嘗試拆分sql。 比如先過濾entityTypefacilityId ,然后用join過濾isLatest什么的。

首先,在 Cosmos 中使用連接會瀕臨死亡,因為根據您收集的文檔,計算量會更高,因此您應該考慮避免這些類型的查詢:

  • 如果可以通過將子隊列項索引為以下內容,請重新定義文檔結構:

    { "entityType": "vehicleStatus", "vehicleCheckInId": "8cd93887-ce34-4b1d-87f6-2f36723319a8", "email": "bsellarbn@instagram.com", "tag": 420, "vin": "1C3BC2FB6BN851962", "phoneNumber": "549-357-1195", "customerName": "Bambie", "facilityId": "7f8663b4-5270-4259-ad33-6646ec33cd42", "vehicleId": "427c6d23-eb65-40cd-b8fa-f0159063509f", "facilityName": "Abc Service Center", "roNumber": "RO70-527-0925", "vehicleDetail": [ { "make": "Subaru", "model": "Outback", "trim": "05-387-2180", "year": 2018, "colorCode": "#6bbede" } ], "advisor": [ { "id": "35d55e01-fbb7-4752-8423-3859f0d46bde", "name": "Abc" } ], "techinician": [ { "id": "480b8d19-fc1a-42df-a1e0-d70b35f4d8fb", "name": "Bcd" } ], "subQueue": { "11": { "id": 11, "queueId": 4, "quoteId": "96d73845-2ba8-4327-b0cc-7580b764f3da", "primaryfacilityId": "c3851f80-0625-46bb-8c3c-78f1418e4caf", "isLatest": "false", "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c" }, "10": { "id": 10, "queueId": 4, "quoteId": "2f24e83d-3cf6-42c9-b50a-4d1a5e68f1f4", "primaryfacilityId": "c3851f80-0625-46bb-8c3c-78f1418e4caf", "isLatest": "false", "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c" }, "12": { "id": 12, "queueId": 4, "quoteId": "04e0142b-ff21-46ca-8346-3e557bd0ba79", "primaryfacilityId": "c3851f80-0625-46bb-8c3c-78f1418e4caf", "isLatest": "true", "CreatedBy": "2d3af542-e6a4-4b3b-b93c-01aa06f77a2c" } }, "createdDate": "2019-12-24 21:57:54", "deletedDate": "null", }

這可以將您的查詢改進為:

where q.subQueue["11"] <> null or any appropriate filter.
  • 其次,如果你想用 subQueue 數組項的多個屬性進行過濾,你肯定應該考慮 udf 它將過濾每個文檔而不是連接,
  • 在集合設置中索引您的查詢屬性,
  • NOSQL 的美妙之處在於可以將數據存儲在任何模式中,因此您應該根據查詢需要優化文檔結構。

希望這足以讓您擺脫查詢中的連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM