您的位置: 首页 >日志>动易系统>详细内容

动易系统

“GOV_主题信息列表”标签SQL查询优化

来源:本站原创 发布时间:2016-06-30 18:10:08 浏览次数: 【字体:

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

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

 

优化过程:

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

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

 

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

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'
  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
 
 
  让人可喜的结果是客户同一主题下的1960条数据访问速度两分钟以上或者直接报错直接提升到忽略不计的1S左右
如上图第110页,每页26条数据只需986ms就加载完毕!
 
 
写一下:个人理解的系统 [dbo].[PR_Common_PagingLarge] 的应用场景吧!
EXEC [dbo].[PR_Common_PagingLarge] '数据库表','关键字段','*',@pagesize,@startrow,'查询条件','','排序方式'
 
 
好了,不多说:分享下标签吧!
 
【GOV_主题信息列表】
×

用户登录