oracle数据库约200W数据查询非常慢,查询需要10几秒,经常查询超时,这个正常吗?有没有什么好的办法解决

建立索引效果也不打,可能是什么问题?数据库的索引分区表都有... 建立索引效果也不打,可能是什么问题?
数据库的索引 分区表都有
展开
 我来答
ffg410
推荐于2018-03-22 · TA获得超过1289个赞
知道小有建树答主
回答量:555
采纳率:66%
帮助的人:488万
展开全部
先确认一下问题,是代码操作的查询还是连接oracle工具操作的查询,优化大数据量主要先从三两方式入手,第一,建索引,这个有讲究:主要是针于你的查询条件(即是在where后面的字段建索引,有几个条件字段就建几个,如果有组合条件查询,那建联合索引)。第二点,就是按表中的数据,进行表分区,如按时间段进行分区,按区域进行分区,按单位或部门进行分区等。减少全表扫描。三,检查一下表空间大少。
追问
代码操作的查询
追答
那这个还得根据代码的写法情况来处理,
那你可以分两部分来检查 ,代码的检查和数据库的检查,把
把代码每个消耗资源的代码执行时间打印出来,确定查询变慢的范围或原因
把可执行SQL放到连接数据库工具去执行,看执行时间有多长,如果是SQL原因,刚优化SQL,如果是数据库数据量的原因,则按前面回答的方式优化。
如果是代码原因:检查运行环境的内存,java虚拟机的内存这些是否有影响,设置二级缓存,在代码中检查,数据库连接方式,是否是IO读取消耗时间比较长,如果是,刚跟硬盘的转速和磁道有关,还要检查代码中业务处理的for是否存在或算法比较是否合理,并检查是否用到游标,确认游标和数据库连接都关闭了没有?,
射手幽灵伊
2013-05-06 · TA获得超过2716个赞
知道大有可为答主
回答量:4955
采纳率:81%
帮助的人:1978万
展开全部
如果是要把这些记录(200W)都取出来,这个时间应该是正常的,需要把这些记录全部从磁盘取出来显示。

如果是从200W里取一些数据出来,应该就不能花这么多时间。

为什么会有取200W条数据这样的需求?取出来做什么用?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-06
展开全部
查询几条数据,查询的条件多吗,如果需要全表扫描的话,按指定的关键字进行分区,建立分区表,这样可以减少扫描,你可以试一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
打理打理小钱包
2020-06-16
知道答主
回答量:1
采纳率:0%
帮助的人:610
展开全部

使用 explain plan FOR,执行计划,看是否使用了索引进行查询

代码:通过查询执行计划,查看Oracle查询语句是否使用索引

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
thain0
2013-05-06 · TA获得超过267个赞
知道小有建树答主
回答量:597
采纳率:0%
帮助的人:530万
展开全部
1. 统计信息失真
2. 查询未使用到索引,即走的是全表扫描

看看查询计划吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式