您的位置:首页> 日志> 动易系统 正文

这个月,突然收到一个政府网站关于政务公开,主题列表页访问速度奇慢,而且当分页数量越大访问速度越慢的反馈!!!一开始还以为是录入的数据有问题,经过一系列排查,最终锁定是由于同一主题下的数据超过1600条导致的错误,从而锁定是由于系统默认标签--“GOV_主题信息列表”SQL查询语句问题!

好吧,直接贴代码吧,系统默认标签查询语句如下:

 

优化过程:

1.用SQL的 INNER JOIN 内连接 代替 AND ID NOT IN();

2.用系统的储存过程 [dbo].[PR_Common_PagingLarge]  替代 NOT IN();

 

根据这个思路把查询语句优化为如下:

<LabelSqlString>EXEC [dbo].[PR_Common_PagingLarge] 'PE_GV_PublicInformation PIN INNER JOIN PE_GV_PublicInfoTheme PT ON (PIN.ThemeId=PT.ThemeId)','PIN.ID',
'*',@pagesize,@startrow ,'(PT.ParentId =@themeId OR PT.ThemeId=@themeId) AND PIN.IsExpired = 0 AND PIN.Status = 2','','PIN.PublicTime DESC'</LabelSqlString>
  <LabelSqlCount>SELECT COUNT(*) FROM PE_GV_PublicInformation PIN INNER JOIN PE_GV_PublicInfoTheme PT ON (PIN.ThemeId=PT.ThemeId) WHERE (PT.ParentId =@themeId OR PT.ThemeId=@themeId)  AND PIN.IsExpired = 0 AND PIN.Status = 2</LabelSqlCount>
 
 
  让人可喜的结果是客户同一主题下的1960条数据访问速度两分钟以上或者直接报错直接提升到忽略不计的1S左右
如上图第110页,每页26条数据只需986ms就加载完毕!
 
 
写一下:个人理解的系统[dbo].[PR_Common_PagingLarge] 的应用场景吧!
EXEC [dbo].[PR_Common_PagingLarge] '数据库表','关键字段','*',@pagesize,@startrow,'查询条件','','排序方式'
 
 
好了,不多说:分享下标签吧!