MS SQL 撈取資料很快 join就變慢(紀錄)

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語法有問題用了一堆記憶體沒有清….

順便紀錄一下 讓自己知道還有這種解決方式(重開解百病)