海量数据查询分页优化

xpmysky 2008-05-29 10:47:17
数据量非常大,存储都是按T来计算。现在只做查询显示,查询条件比较多。在做分页显示的时候比较慢。已经合理的使用了索引。不知道各位有没有好的思路或者方法。或者能对下面的SQL语句能在优化一下。
select * from (select b.*,a.*,rownumber() over(order by a.LAST_MODIFIED_TIME ASC) as co from TEC_T_EVT_REP
as a join TEC_T_SLOTS_EVT b on a.DATE_RECEPTION=b.DATE_RECEPTION and a.SERVER_HNDL= b.SERVER_HNDL and a.EVENT_HNDL=b.EVENT_HNDL
where a.LAST_MODIFIED_TIME>='2008-05-20 00:00:00'and a.LAST_MODIFIED_TIME>='2008-05-27 23:59:59' and a.class NOT IN
('NIDS_Sensor_Event','NIDS_Alert_Event', 'TrustLink_Event2','NIDS_Network_Event','TrustLink_Event','NIDS_Event') AND(a.severity >= 30) and b.name="" //条件比较多
)as o where o.co between 21 and 30;
...全文
145 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xpmysky 2008-06-05
  • 打赏
  • 举报
回复
按照你的方法速度没有很大的提升~因为数据太多。查询短时间内比较快。如果查询一个星期或者一个月就非常的慢~
希望能有好的建议~~
哥是我 2008-06-03
  • 打赏
  • 举报
回复
TEC_T_EVT_REP 是主表 把, 先 吧TEC_T_EVT_REP 查询出 试试看,

见 :
select * from (select b.*,a.*,rownumber() over(order by a.LAST_MODIFIED_TIME ASC) as co
from (
select * from //
TEC_T_EVT_REP
where a.LAST_MODIFIED_TIME>='2008-05-20 00:00:00'
and a.LAST_MODIFIED_TIME>='2008-05-27 23:59:59'
and a.class NOT IN
('NIDS_Sensor_Event','NIDS_Alert_Event', 'TrustLink_Event2','NIDS_Network_Event','TrustLink_Event','NIDS_Event')
AND(a.severity >= 30 )
) as a join TEC_T_SLOTS_EVT b
on a.DATE_RECEPTION=b.DATE_RECEPTION
and a.SERVER_HNDL= b.SERVER_HNDL
and a.EVENT_HNDL=b.EVENT_HNDL
where
b.name="" //条件比较多
)as o where o.co between 21 and 30;

xpmysky 2008-06-01
  • 打赏
  • 举报
回复
没有朋友帮忙优化一下吗?
xpmysky 2008-05-30
  • 打赏
  • 举报
回复
select c,c1 from (select b.SLOT_NAME as c,b.SHORT_SLOT_VALUE as c1,rownumber() over(order by a.LAST_MODIFIED_TIME ASC) as co from TEC_T_EVT_REP
as a join TEC_T_SLOTS_EVT b on a.DATE_RECEPTION=b.DATE_RECEPTION and a.SERVER_HNDL= b.SERVER_HNDL and a.EVENT_HNDL=b.EVENT_HNDL
where a.LAST_MODIFIED_TIME>='2008-05-20 00:00:00'and a.LAST_MODIFIED_TIME>='2008-05-27 23:59:59' and a.class NOT IN
('NIDS_Sensor_Event','NIDS_Alert_Event', 'TrustLink_Event2','NIDS_Network_Event','TrustLink_Event','NIDS_Event')and b.SLOT_NAME in ('ClientPort','name') and b.SHORT_SLOT_VALUE in('','')//in里面有很多条件
)as o where o.co between 21 and 30;


希望高手能够进一步优化上面这条SQL语句

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧