看板 Database 關於我們 聯絡資訊
各位大大好:因為我用linked server的方式將二個資料庫連結, 這樣語法就能結何成一起用,並且我用了檢示表的方式來作,結果 發生了二台不同的機器,效能差很多,a機器2秒,b機器要1分鐘 不過想先請教各位,我的語法能再調整嗎? vc <---檢示表名 Select a.學期, a.學號, a.課程代碼, a.課程班級, b.老師編號, b.老師姓名 From 學生選修表 as a Inner Join 教師教授表 as b on a.課程代碼 = b.課程代碼 And a.課程班級 = b.課程班級 And a.學期 = b.學期 Inner Join 課程名稱表 as c on a.課程代碼 = c.課程代碼 Where (a.課程代碼 like '%900%') and (c.課程名稱 like '%國語文%') //////以下有結合上面的檢示表 vt <----檢示表名 SELECT sd.學號 AS std_no, sd.學期 AS smtr, sd.老師編號, sb.學生姓名, (SELECT CASE WHEN SUM(sm.修課時數) IS NULL THEN 0 ELSE SUM(sm.修課時數 ) END AS Expr1 FROM 修課記錄 AS sm WHERE (學號 = sd.學號) AND (學期 = sd.學期) AND (導師認可 = 1) AND (主 任認可 = 1)) AS hr, (SELECT cOUNT(學號) AS Expr1 FROM 修課記錄 AS sm WHERE (學號 = sd.學號) AND (學期 = sd.學期) AND (導師認可 = 1) AND (主任認可 = 1)) AS stdcount FROM VC AS sd LEFT OUTER JOIN 學生資料表 AS sb ON sd.學號 = sb.學號 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.121.234
alan3100:a機器是啥 b機器是啥 如果是2台client的話你找錯重點了 09/29 10:02
wind681201:你誤會我的意思,我也想看看我這語法能不能有改進的地 09/29 12:41
jengting:要了解T-SQL語法撰寫的perfomance問題,請先了解SARG 09/30 08:15
jengting:第一段語法的問題是使用 LIKE 09/30 08:15
jengting:第二段語法的問題在於子查詢 09/30 08:15
jengting:另外你提供的語法,看不出哪裡使用 Link Server ^^?? 09/30 08:16
rockchangnew:千萬別用linked server來join,請先用openquery來做 09/30 20:21
danny8376:元PO是說相同資料庫結構的機器跑同樣這個Query 10/01 03:23
danny8376:結果跑出來速度差異很大 沒說到linked server啊XDD 10/01 03:24
danny8376:恩... 好像有理解錯誤OTZ 10/01 03:26
danny8376:不過感覺那2s 1min的描述確實是我想的那樣OAO!? 10/01 03:27
wind681201:因為linked後可以直接使用,所以我就沒特別加了 10/01 22:44
wind681201:請問您想的是怎樣呢? 10/01 22:44