t-sql join tables timeout 有很多可能
MS SQL下TSQL撈取資料時,五千筆資料都不到一秒就結束查詢,一但跟任何一張表作JOIN馬上查詢時間變超過30秒,來找問題到底在哪裡
前言
剛好遇到客戶詢問,SQL語法的問題,SELECT某些區塊的語法都很快,但某些區塊會變超慢才返回結果
案例
因為我本身沒有MS SQL的連線權力,所以是在客戶旁開始分解SQL語法,
第一階段CTE分開執行查出哪一個區段變慢,發現每個分開執行都很快,
最後組裝Join就變很慢,繼續拆分到了某一張資料表,發現只要JOIN該表就會變超慢,
甚至把所有查詢中一堆CASE WHEN,全部都拿掉組成很單純的JOIN,
資料量只有五千筆一樣慢。
因為資料來源部分,一部分是跨資料庫查詢而來,還特地請客戶確認一下兩台資料庫定序式不是一樣,
結果一樣,何解? 不是語法,不是定序只是JOIN就變慢…..
結果
後續有資料庫權限的客戶進入資料庫,發現tempTable炸了,
重開MS SQL SERVER,同樣的查詢變回一秒內了…..
這件事情告訴我….該請DBA還是得請阿,至少可以監控一下,
那些SQL語法有問題用了一堆記憶體沒有清….
順便紀錄一下 讓自己知道還有這種解決方式(重開解百病)