台灣最大程式設計社群網站
線上人數
1395
 
會員總數:246133
討論主題:189712
歡迎您免費加入會員
討論區列表 >> MS SQL >> 月份查詢速度過慢
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
月份查詢速度過慢
價值 : 100 QP  點閱數:245 回應數:3
樓主

培根
門外漢
0 45
1165 137
發送站內信

各位藍色小舖的朋友好。
目前資料有1萬筆,資料還在變大,而我的頭也在持續變大。
目前已知罪魁禍首主要是"[Datetime] BETWEEN @dt AND @dt1"這段,但如果我指查詢1天的日期也要7秒,查詢30天則要30~40秒以上。
找過很多網站沒有很有用的方法。
想過把"[Datetime] BETWEEN @dt AND @dt1" 換成 "DAY([Datetime]) = '25'",但資料只給出5000筆就停住了
想過把"[Datetime] BETWEEN @dt AND @dt1" 換成 "[Datetime] >= '2020/09/01 00:00:00:000'" 雖然少判斷了一次,但查詢時間沒差多少
想請問各位友人有沒有一個好方法?


搜尋相關Tags的文章: [ 月份查詢速度過慢 ] ,
本篇文章發表於2020-09-25 18:01
1樓
不錯的參考

pilipala
檢舉此回應
建議先觀察執行計畫,了解瓶頸在哪,直覺是建立 [DateTime], [Tagname] 的複合索引應該會有所改善
本篇文章回覆於2020-09-25 23:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

阿恢
捐贈 VP 給 阿恢 檢舉此回應
你查詢時,先下日期條件查詢看看,看速度是否有加快。如果有的話,先撈出欲查詢日期區的資料,寫到temp table,然後再針對temp table裡的TagName欄位,去做查詢。

先試試看這樣速度有沒有加快...


有的話再這樣看看

本篇文章回覆於2020-09-28 11:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

培根
檢舉此回應
To 阿恢:
感謝阿輝方法,我有想過用臨時表做,但發現它並不會自動刪除報表。
查了文章似乎要下"WAITFOR DELAY '00:00:40'",
但還是不能,好像要重開機才會從記憶體刪除。

我只細想了想,我上方的[TagName]全部都是累積值但為了怕累積值爆炸,所以到了一定的數值後它就會降回0
公式為:(累積數值-上限值)+數值
所以我只要多下 "AND [Value] >= 上限值" 即可
結果很滿意13秒

還是感謝 阿恢 跟 pilipala
本篇文章回覆於2020-09-28 15:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.