一个简单的查询,速度为什么这么慢啊??那位高手指点一下.

liuyjcel 2008-03-06 02:36:25
有两个表:一个是类别表Class(不到300条记录),一个是明细表List(几十万条记录);
查询语句如下:
select * from Class,List where Class.Id=List.ClassID and List.Code='0002'
order by year desc
这样一条简单的查询却要10多秒..这种现象是正常的吗/?有什么办法可以提高查询速度.
...全文
260 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
有点难度哦
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
这个简单啊,网上搜一下就得到答案了.
mike123hl 2008-04-27
  • 打赏
  • 举报
回复
1.建立索引
2.先筛选,后连接
thy1984 2008-04-12
  • 打赏
  • 举报
回复
dichun 2008-04-12
  • 打赏
  • 举报
回复
前面的都已经说了,补偿一点,
List表建立覆盖索引,可能也会快些,
如果你表的索引建立的较多,请指定索引进行处理,
对于调优这表方面还是要学习,
star_guan2008 2008-04-12
  • 打赏
  • 举报
回复
ding
sinusoid 2008-04-11
  • 打赏
  • 举报
回复
select * from Class,List where Class.Id=List.ClassID and List.Code='0002'
order by year desc
1.Class.Id应该是主键,有索引
2.List.ClassID外连接Class.Id,一定要建索引
3.List.Code会被经常查询,,一定要建索引
4.order by 会影响一定效率。
三个索引建好,查询不会超过1S。
clqaitxp 2008-04-11
  • 打赏
  • 举报
回复
thanks,good learned
水蓝涩曦 2008-03-30
  • 打赏
  • 举报
回复
回帖是一种美德!学习了不回是不道德的
tybvip 2008-03-28
  • 打赏
  • 举报
回复
表Class.Id,List.ClassID 分别建立索引,别外不要用*号,列出具体的字段名,效率提高80%
javaiswhat 2008-03-28
  • 打赏
  • 举报
回复
受教了,谢谢
积累成长 2008-03-27
  • 打赏
  • 举报
回复
List.Code='0002' 放前面,先进行一次过滤。数据量小多了
sishenyu 2008-03-25
  • 打赏
  • 举报
回复
你用ORDER BY是要慢一点的,不用就马上出来了
wind__dance 2008-03-25
  • 打赏
  • 举报
回复
你用的是oracle8i吗?是的话改成这样子:
select * from List , Class
where List.ClassID = Class.Id
and List.Code='0002'
order by year desc
并且在List.Code上建立索引。
如果是9i以上版本的话,把表分析一下就可以了
sinusoid 2008-03-22
  • 打赏
  • 举报
回复
有两个表:一个是类别表Class(不到300条记录),一个是明细表List(几十万条记录);
查询语句如下:
select * from Class,List where Class.Id=List.ClassID and List.Code='0002'
order by year desc

=>
几十万不多,
1.假设Class.Id,ID是该表的唯一主键,唯一索引要建
2.List.ClassID,LIST 的CLASSID一定要建索引(关键)
3.List.Code也要建索引(关键)
4.Order By会影响一定速度,是否可以拿掉?
zgmeimei 2008-03-22
  • 打赏
  • 举报
回复
路过,顶一下,支持LZ

------------------------------------------------

给灌水区的兄弟们推荐一个养眼的网站,嘿嘿。
http://www.zgmeimei.cn
iihero 2008-03-20
  • 打赏
  • 举报
回复
List.Code
Class.Id
List.ClassID
year

上述四个字段分别建立索引,再试。
现在小表大表的前后顺序,oracle已经作了优化了。
关键还是索引。
另外,尽量减少返回列的数量,可以加速取数据的速度。
hellochina_2008 2008-03-20
  • 打赏
  • 举报
回复
顶一个,又学到不少东西^_^
认真读书 2008-03-20
  • 打赏
  • 举报
回复
回帖是一种美德!学习了不回是不道德的
sparrow_liu 2008-03-20
  • 打赏
  • 举报
回复
回帖是一种美德!学习了不回是不道德的
加载更多回复(13)

1,618

社区成员

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

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