作者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
1F:推 jain00:建议先查一下整个网页的运作,看看是慢在那? 12/16 21:23
2F:→ jain00:如果懒的话,把sql放到主机run,看反应时间 12/16 21:24
3F:→ jain00:用sp不一定会比较快,要看反应慢的原因。 12/16 21:24
4F:→ g66932007:因为该页面就是计算後呈现在Gridview上,慢的话应该是慢 12/16 21:43
5F:→ g66932007:在sql要多表查询且都为多对多..... 12/16 21:43
6F:推 jain00:那建议从sql效能优化去找,看能不能先改sql下的语法。 12/17 13:14