永发信息网

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

答案:5  悬赏:10  手机版
解决时间 2021-11-26 04:28
  • 提问者网友:太高姿态
  • 2021-11-25 22:04
oracle数据库约200W数据查询非常慢,查询需要10几秒,经常查询超时,这个正常吗?有没有什么好的办法解决
最佳答案
  • 五星知识达人网友:鸠书
  • 2021-11-25 22:41
先确认一下问题,是代码操作的查询还是连接oracle工具操作的查询,优化大数据量主要先从三两方式入手,第一,建索引,这个有讲究:主要是针于你的查询条件(即是在where后面的字段建索引,有几个条件字段就建几个,如果有组合条件查询,那建联合索引)。第二点,就是按表中的数据,进行表分区,如按时间段进行分区,按区域进行分区,按单位或部门进行分区等。减少全表扫描。三,检查一下表空间大少。追问代码操作的查询追答那这个还得根据代码的写法情况来处理,
那你可以分两部分来检查 ,代码的检查和数据库的检查,把
把代码每个消耗资源的代码执行时间打印出来,确定查询变慢的范围或原因
把可执行SQL放到连接数据库工具去执行,看执行时间有多长,如果是SQL原因,刚优化SQL,如果是数据库数据量的原因,则按前面回答的方式优化。
如果是代码原因:检查运行环境的内存,java虚拟机的内存这些是否有影响,设置二级缓存,在代码中检查,数据库连接方式,是否是IO读取消耗时间比较长,如果是,刚跟硬盘的转速和磁道有关,还要检查代码中业务处理的for是否存在或算法比较是否合理,并检查是否用到游标,确认游标和数据库连接都关闭了没有?,
全部回答
  • 1楼网友:妄饮晩冬酒
  • 2021-11-26 02:27
1. 统计信息失真
2. 查询未使用到索引,即走的是全表扫描

看看查询计划吧
  • 2楼网友:詩光轨車
  • 2021-11-26 01:26
如果是要把这些记录(200W)都取出来,这个时间应该是正常的,需要把这些记录全部从磁盘取出来显示。

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

为什么会有取200W条数据这样的需求?取出来做什么用?
  • 3楼网友:拾荒鲤
  • 2021-11-26 00:18
你把SQL语句贴出来。具体看看
  • 4楼网友:逐風
  • 2021-11-26 00:07
查询几条数据,查询的条件多吗,如果需要全表扫描的话,按指定的关键字进行分区,建立分区表,这样可以减少扫描,你可以试一下
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯