Sql-Server
在 SQL Server Azure 中優化 BETWEEN 查詢
我有一個儲存時間序列(5 分鐘)數據的表,並且正在嘗試執行一個包含 BETWEEN 子句的查詢。下面是表結構:-
時間戳 | 組件ID | 參數1 | 參數2 | 參數3
該表在 ComponentId 上有一個索引,還有一個聚集列儲存索引(Azure S3 及更高版本獲得此功能)。
我正在嘗試執行的查詢:-
SELECT * FROM table WHERE Timestamp BETWEEN '2020-01-01' AND '2020-01-02'
我正在遍歷多個類似的表來獲取數據,有時需要大約 30 秒才能獲得一天的數據。我能做些什麼來減少這個時間嗎?
要使此查詢快速執行,您將需要按時間戳排序的數據。
你有幾個選擇
如果使用聚集列儲存索引,則需要首先通過在 Timestamp 上添加聚集索引來對錶中的數據進行排序,然後使用 maxdop = 1 和 drop_existing 創建列儲存索引。
您可以擺脫列儲存索引,只在時間戳上使用聚集索引。
您可以在 Timestamp 上使用非聚集索引,並在表中包含所有其他索引(如果根據數據類型只有 5 列,則可能沒問題)。
您可以按時間戳對錶進行分區 - 這是另一個更長的對話