SQL 查詢優化案例研究:提升水位監測系統性能
背景水位監測系統的主查詢開始出現「執行逾時到期。在作業完成之前超過逾時等待的時間,或是伺服器未回應。」,這是應用層的 CommandTimeout(預設 30 秒),一旦觸發就連帶觸發 LINE 通知錯誤,警報不斷。 初始情況系統概況 共 120 個監測站點(stt_no) 每 10 分鐘向 WaterLevelGaugeHistory 匯入一次資料,觀察時已累積逾 500 萬筆 需要查詢每個站點最近 24 小時的最新一筆 原始查詢執行時間約 1 分鐘以上: 12345678910111213SELECT DISTINCT WL.[ID], WL.[stt_name], /* 其他欄位 ... */ WLH.[measure_time], WLH.[val], WLH.[Status], WLH.cstatus, WLH.[Epower], WLH.nodataFROM [dbo].[WaterLevelGauge] WLLEFT JOIN [dbo].[WaterLevelGauge_detailed_View] WLD ON WL.[stt_name]...




