看板 C_Sharp 關於我們 聯絡資訊
請問因為有個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