看板 Database 關於我們 聯絡資訊
使用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
g66932007:直接跟員工表作JOIN就好啦 不用迴圈跑吧 03/04 23:41
g66932007:FROM跟TO各拆成三格欄位儲存,就不用用到LIKE指令 03/04 23:44
talenttb:因為他要算每個人,join起來好像很難統計 03/04 23:47
talenttb:重點是他不讓我重構schema 03/04 23:48
bohei:所以要查的是人跟次數嗎? 03/05 00:37
talenttb:是的 03/05 07:20