作者wind681201 (阿風~~)
看板Database
標題[SQL ] 請問這樣的語法能再改成有效率的嗎?
時間Sun Sep 29 00:18:48 2013
各位大大好:因為我用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