[SQL ] MSSQL效能問題請教

看板Database作者 (CC)時間13年前 (2013/03/04 23:20), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串1/1
使用MS SQL 2008 R2 要做一個統計的SQL查詢 資料大概是長這樣 SomeTbl from to actiontype who_do_it . . . ------------------------------------------------------------------------ 台灣-台北-大同區 台灣-高雄-岡山 4 kevin 台灣-台北-中山區 台灣-台北-淡水 6 john 台灣-新北-土城 台灣-桃園-桃園 6 john . . . 大概是這樣的資料三百萬筆左右 想請問的問題有下列幾點 1. "誰"做了幾項。 使用cursor,把人員表當作變數一筆一筆往下查詢(我有將cursor設read only,不知道 會不會快一點)。 2. 我想查詢從北部出發的,包含台北、新北、桃園。 select count(1) from SomeTbl where [from] like '%台北%' or [from] like '%新北%' or [from] like '%桃園%' 3. 跟第二點很像,不過是反向查詢,查詢不是從台北出發。 我將條件前面放一個not select count(1) from SomeTbl where not ([from] like '%台北%' or [from] like '%新北%' or [from] like '%桃園%') 查詢浪費時間的就是去計算"一個人從北部出發的次數,非北部出發的次數, 北部回來的次數,非北部回來的次數" 人員大約一千人,搭配SomeTbl(資料三百萬筆),這樣會花很多時間。 因為資料量不算小,不知道還有沒有小細節可以修的更好。 對了這個會寫成store procedure。 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.163.19.70

03/04 23:41, , 1F
直接跟員工表作JOIN就好啦 不用迴圈跑吧
03/04 23:41, 1F

03/04 23:44, , 2F
FROM跟TO各拆成三格欄位儲存,就不用用到LIKE指令
03/04 23:44, 2F

03/04 23:47, , 3F
因為他要算每個人,join起來好像很難統計
03/04 23:47, 3F

03/04 23:48, , 4F
重點是他不讓我重構schema
03/04 23:48, 4F

03/05 00:37, , 5F
所以要查的是人跟次數嗎?
03/05 00:37, 5F

03/05 07:20, , 6F
是的
03/05 07:20, 6F
文章代碼(AID): #1HDBkp9V (Database)