oracle数据库约200W数据查询非常慢,查询需要10几秒,经常查询超时,这个正常吗?有没有什么好的办法解决
6个回答
展开全部
先确认一下问题,是代码操作的查询还是连接oracle工具操作的查询,优化大数据量主要先从三两方式入手,第一,建索引,这个有讲究:主要是针于你的查询条件(即是在where后面的字段建索引,有几个条件字段就建几个,如果有组合条件查询,那建联合索引)。第二点,就是按表中的数据,进行表分区,如按时间段进行分区,按区域进行分区,按单位或部门进行分区等。减少全表扫描。三,检查一下表空间大少。
追问
代码操作的查询
追答
那这个还得根据代码的写法情况来处理,
那你可以分两部分来检查 ,代码的检查和数据库的检查,把
把代码每个消耗资源的代码执行时间打印出来,确定查询变慢的范围或原因
把可执行SQL放到连接数据库工具去执行,看执行时间有多长,如果是SQL原因,刚优化SQL,如果是数据库数据量的原因,则按前面回答的方式优化。
如果是代码原因:检查运行环境的内存,java虚拟机的内存这些是否有影响,设置二级缓存,在代码中检查,数据库连接方式,是否是IO读取消耗时间比较长,如果是,刚跟硬盘的转速和磁道有关,还要检查代码中业务处理的for是否存在或算法比较是否合理,并检查是否用到游标,确认游标和数据库连接都关闭了没有?,
展开全部
如果是要把这些记录(200W)都取出来,这个时间应该是正常的,需要把这些记录全部从磁盘取出来显示。
如果是从200W里取一些数据出来,应该就不能花这么多时间。
为什么会有取200W条数据这样的需求?取出来做什么用?
如果是从200W里取一些数据出来,应该就不能花这么多时间。
为什么会有取200W条数据这样的需求?取出来做什么用?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-06
展开全部
查询几条数据,查询的条件多吗,如果需要全表扫描的话,按指定的关键字进行分区,建立分区表,这样可以减少扫描,你可以试一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用 explain plan FOR,执行计划,看是否使用了索引进行查询
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. 统计信息失真
2. 查询未使用到索引,即走的是全表扫描
看看查询计划吧
2. 查询未使用到索引,即走的是全表扫描
看看查询计划吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询