查询速度太慢了!高手帮我优化一下吧!急!!!!!

figo977 2011-12-01 02:32:03
 select
*
from
(select
a.resultid,
a.dataid,
a.tiptext,
b.title,
b.content,
b.issuetime,
b.url,
rownum as rn
from
r_resultnews a
left join
v_chn_news b
on a.dataid=b.dataid
where
a.classid=2378
and siteid in (
select
siteid
from
tg_eventstatic
where
datatype=1
and eventclass=2378
and positionid='北京'
)
and rownum>0
)
where
rn>0
and rn<=30
...全文
157 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hupeng213 2011-12-06
  • 打赏
  • 举报
回复
--select *
-- from (
select a.resultid,
a.dataid,
a.tiptext,
b.title,
b.content,
b.issuetime,
b.url,
rownum as rn
from r_resultnews a
left join v_chn_news b on a.dataid = b.dataid
where a.classid = 2378
and exists (select 1 from tg_eventstatic
where datatype = 1
and eventclass = 2378
and positionid = '北京')
and rn <= 30--由于子句中未做排序 外面再包一层没有任何区别不是吗 一句的效率肯定比两句高
/*--修改原则 exists 效率高于left join 高于in
and siteid in (select siteid
from tg_eventstatic
where datatype = 1
and eventclass = 2378
and positionid = '北京')
*/
--and rownum > 0 --这个条件任何时间都有效 不需要写
-- )
-- where rn > 0
-- and rn <= 30
阿健来了 2011-12-05
  • 打赏
  • 举报
回复

SELECT *
FROM (SELECT A.RESULTID,
A.DATAID,
A.TIPTEXT,
B.TITLE,
B.CONTENT,
B.ISSUETIME,
B.URL,
ROWNUM AS RN
FROM R_RESULTNEWS A
LEFT JOIN V_CHN_NEWS B
ON A.DATAID = B.DATAID
WHERE A.CLASSID = 2378
AND EXISTS(SELECT 1 FROM TG_EVENTSTATIC c
WHERE a.SITEID=c.SITEID
AND DATATYPE = 1
AND EVENTCLASS = 2378
AND POSITIONID = '北京')
AND ROWNUM > 0)
WHERE RN > 0
AND RN <= 30

这样会不会好点
JS 2011-12-05
  • 打赏
  • 举报
回复
lz把具体情况阐述一下吧
oO寒枫Oo 2011-12-01
  • 打赏
  • 举报
回复
siteid 是r_resultnews 的 还是 是v_chn_news 的
jym2002 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 figo977 的回复:]
需求就是查询北京地区发表关于专题id号为2378的新闻数量
[/Quote]

--------------
执行计划,数据量贴下
figo977 2011-12-01
  • 打赏
  • 举报
回复
需求就是查询北京地区发表关于专题id号为2378的新闻数量
我心飞翔 2011-12-01
  • 打赏
  • 举报
回复
请给出各个表的表结构,和查询的需求。
figo977 2011-12-01
  • 打赏
  • 举报
回复
查询出来14条 数据 大概要2分钟吧!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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