作者g66932007 (孤單的人)
看板C_Sharp
標題[問題] SQL 使用stored procedure
時間Sun Dec 16 17:30:48 2012
請問因為有個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
推 jain00:建議先查一下整個網頁的運作,看看是慢在那? 12/16 21:23
→ jain00:如果懶的話,把sql放到主機run,看反應時間 12/16 21:24
→ jain00:用sp不一定會比較快,要看反應慢的原因。 12/16 21:24
→ g66932007:因為該頁面就是計算後呈現在Gridview上,慢的話應該是慢 12/16 21:43
→ g66932007:在sql要多表查詢且都為多對多..... 12/16 21:43
推 jain00:那建議從sql效能優化去找,看能不能先改sql下的語法。 12/17 13:14