注册 登录
编程论坛 ASP技术论坛

帮我提高一个代码效率

xiapi 发布于 2008-05-30 15:13, 680 次点击
有两个表,一个是分类表news_sort有50多个类,一个是新闻表news有5万多记录,用的是mssql2000
实现效果:输出所在的类别,并在类别后显示本类别的新闻数,大概效果如下图
只有本站会员才能查看附件,请 登录

原来的代码大概是这样子:
<%set rs=conn.execute("select news_sortid,news_sort from [news_sort] order by news_sortplace desc")
do while not rs.eof
set rs1=conn.execute("select count(news_id) from [news] where news_sortid="&rs("news_sortid")&"")
response.write rs("news_sort")&"("&rs1(0)&")"
rs1.close:set rs1=nothing
rs.movenext
loop
rs.close:set rs=nothing
%>
可是这个运行下来大时间太长了要400多毫秒,因为数据量不大用这么多时间有点太长了

看怎么能提高一下效率,我想写一个存储过程,但是不知道该怎么写?

[[it] 本帖最后由 xiapi 于 2008-5-30 15:14 编辑 [/it]]
3 回复
#2
multiple19022008-05-30 18:38
人家用缓存的……人家不是每次都要重新查一次的……
#3
天涯听雨2008-05-30 18:53
没有写存储过程,但写了一个查询语句。我测试的数据是十二万!感觉速度还可以

Select a.news_sort,b.SortSum from [news_sort] as a left join (Select Count(ID) as SotrSum,news_sortid from [news] Group BY news_sortid) as b on (b.onews_sortid=a.news_sortid) order by a.news_sortplace desc
#4
天涯听雨2008-05-30 18:54
不过有时候人家是在分类后直接有个字段来记录多少。这样就会更加省事
1