[問題] SQL 使用stored procedure

看板C_Sharp (C#)作者 (孤單的人)時間12年前 (2012/12/16 17:30), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
請問因為有個web頁面要產生統計的表格, 大概如下: a b c d ........ A x x1 x2 x3....... B y y1 y2 y3..... C z z1 z2 z3 ...... . . . x,x1...y,y1...z,z1都是由A與a,B與b,C與c..等來當做條件count出來的數量 目前是由後端產生sql語法來執行count數量計算, 為了減少查詢資料庫次數, 每一列我都用union all串起來,如下 select count(*) from XXX where A in (select a1 from xxx where a1= a) union all select count(*) from XXX where A in (select a1 from xxx where a1= b) union all select count(*) from XXX where A in (select a1 from xxx where a1= c) ........................ 有多少欄就union幾次(上述sql簡單描述,實際有多子查詢), 結果每次進到這個頁面都要等個9秒以上....效率很差 想說如果改用stored procedure, 直接把計算語法寫在DB中,效率會差很多嗎?? 我由後台產生的sql語法傳到DB去執行,難道是語法太長要傳輸時間?? 不知各位前輩有無此經驗,或是有更好的辦法?? 謝謝您指教..... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.213.242

12/16 21:23, , 1F
建議先查一下整個網頁的運作,看看是慢在那?
12/16 21:23, 1F

12/16 21:24, , 2F
如果懶的話,把sql放到主機run,看反應時間
12/16 21:24, 2F

12/16 21:24, , 3F
用sp不一定會比較快,要看反應慢的原因。
12/16 21:24, 3F

12/16 21:43, , 4F
因為該頁面就是計算後呈現在Gridview上,慢的話應該是慢
12/16 21:43, 4F

12/16 21:43, , 5F
在sql要多表查詢且都為多對多.....
12/16 21:43, 5F

12/17 13:14, , 6F
那建議從sql效能優化去找,看能不能先改sql下的語法。
12/17 13:14, 6F
文章代碼(AID): #1GpPJBJz (C_Sharp)
文章代碼(AID): #1GpPJBJz (C_Sharp)