CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

效率问题

楼主lasttenth(开水)2001-07-25 13:07:05 在 Web 开发 / ASP 提问

论坛是用树型结构是不是比每次点击进去看的效率高,  
  如果是,如何实现的,我想的好复杂  
   
  另外,分页程序你们是不是每次吧数据都读出来的,如何做效率高,使每次看的时候才读出当前页的记录,  
  谢谢 问题点数:30、回复次数:3Top

1 楼tripofdream(梦之旅)回复于 2001-07-25 13:28:05 得分 0

>>另外,分页程序你们是不是每次吧数据都读出来的,如何做效率高,使每次看的时候才读出当前页的记录,  
  那就做分页的存储过程好了  
  Top

2 楼lasttenth(开水)回复于 2001-07-26 00:07:36 得分 0

我看存储过程就头大  
  给个例子吧Top

3 楼tripofdream(梦之旅)回复于 2001-07-26 21:44:08 得分 30

转自chinaasp  
   
  存储过程分页  
   
  关键词:Sql   Server,   ASP  
   
  作者:bigeagle  
   
  if   exists(select   *   from   sysobjects   where   ID   =   object_id("up_TopicList"))  
        drop   proc   up_TopicList  
  go  
   
  create   proc   up_TopicList    
                          @a_ForumID   int   ,   @a_intDays   int   ,   @a_intPageNo   int   ,   @a_intPageSize   tinyint  
        as  
                declare   @m_intRecordNumber   int  
                declare   @m_intStartRecord     int  
                select   @m_intRecordNumber   =   @a_intPageSize   *   @a_intPageNo  
                select   @m_intStartRecord   =   @a_intPageSize   *   (@a_intPageNo   -   1)   +   1  
   
                if   @a_intDays   =   0                                             --如果不限定天数  
                      begin  
                                  /*求符合条件记录数*/  
                                  select   "RecordCount"   =   count(*)                                                    
                                                from   BBS   where   Layer=1   and   ForumID   =   @a_ForumID    
   
                                /*输出纪录*/  
                                /*首先定义可滚动光标*/  
                                set   rowcount   @m_intRecordNumber  
                                declare   m_curTemp   Scroll   cursor    
                                                for  
                                                      select   a.ID   ,a.Title   ,   d.UserName   ,   a.FaceID   ,  
                                                                  'ContentSize'   =   datalength(a.Content)   ,    
                                                                  'TotalChilds'   =   (select   sum(TotalChilds)    
                                                                                                                  from   BBS   as   b    
                                                                                                                  where   a.RootID   =   b.RootID)   ,  
                                                                  'LastReplyTime'   =   (select   max(PostTime)    
                                                                                                                      from   BBS   as   c    
                                                                                                                      where   a.RootID   =   c.RootID)  
                                                                  from   BBS   as   a    
                                                                            join   BBSUser   as   d   on   a.UserID   =   d.ID    
                                                                  where   Layer=1   and   ForumID   =   @a_ForumID    
                                                                  order   by   RootID   desc   ,   Layer   ,   PostTime  
                                open   m_curTemp  
                                fetch   absolute   @m_intStartRecord   from   m_curTemp  
                                while     @@fetch_status   =   0    
                                              fetch   next   from   m_curTemp  
   
                                set   rowcount   0    
                                /*清场*/                
                                CLOSE   m_curTemp  
                                DEALLOCATE   m_curTemp  
                      end                                              
                                                       
                else                                                                 --如果限定天数                      
   
                      begin  
                                  /*求符合条件记录数*/  
                                  select   "RecordCount"   =   count(*)                                                    
                                                from   BBS   where   Layer=1   and   ForumID   =   @a_ForumID    
                                                                              and   dateadd(day   ,   @a_intDays   ,   PostTime)   >   getdate()    
   
                                /*输出纪录*/  
                                /*首先定义可滚动光标*/  
                                set   rowcount   @m_intRecordNumber  
                                declare   m_curTemp   Scroll   cursor    
                                                for  
                                                      select   a.ID   ,a.Title   ,   d.UserName   ,   a.FaceID   ,  
                                                                  'ContentSize'   =   datalength(a.Content)   ,    
                                                                  'TotalChilds'   =   (select   sum(TotalChilds)    
                                                                                                                  from   BBS   as   b    
                                                                                                                  where   a.RootID   =   b.RootID)   ,  
                                                                  'LastReplyTime'   =   (select   max(PostTime)    
                                                                                                                      from   BBS   as   c    
                                                                                                                      where   a.RootID   =   c.RootID)  
                                                                  from   BBS   as   a    
                                                                            join   BBSUser   as   d   on   a.UserID   =   d.ID    
                                                                  where   Layer=1   and   ForumID   =   @a_ForumID    
                                                                              and   dateadd(day   ,   @a_intDays   ,   PostTime)   >   getdate()    
                                                                  order   by   RootID   desc   ,   Layer   ,   PostTime  
                                open   m_curTemp  
                                fetch   absolute   @m_intStartRecord   from   m_curTemp  
                                while     @@fetch_status   =   0    
                                              fetch   next   from   m_curTemp  
   
                                set   rowcount   0    
                                /*清场*/                
                                CLOSE   m_curTemp  
                                DEALLOCATE   m_curTemp  
                      end                                                                                                  
  go  
   
   
  注:若在asp中调用存储过程的command对象为cm,则set   rs=cm.execute,然后用set   rs=rs.nextrecordset取下一条记录。  
  Top

相关问题

  • 效率问题
  • 运行效率!
  • GDI+效率差?
  • 关于效率
  • 效率问题.
  • 效率问题
  • mysql效率问题
  • 哪个效率高?
  • JavaMail效率问题
  • Sql执行效率

关键词

  • 分页
  • intpageno
  • intpagesize
  • forumid
  • 效率高
  • select

得分解答快速导航

  • 帖主:lasttenth
  • tripofdream

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo