问题描述
- oracle千万级查询速度问题
-
一个2、3w的服务器,现有数据1500w左右,按月分区,大约有10几个分区。
查询两个一个上月的数据,查询时间在100s多,客户直接受不了了,是否可以秒开?
如何优化?
解决方案
为什么要一次性返回全部数据呢?那样当然慢,可以分页。另外,你是怎么查询的,有没有对条件加上索引。
解决方案二:
把一些常用数据放cache,内存中。查询数据库就刷新内存。这样只有第一个慢。
解决方案三:
你可以利用oracle的分批次查询,比如:SELECT *
FROM (
SELECT ROWNUM SN, t.*
FROM TABLE_NAME t
ORDER BY ROWID
)
WHERE SN>5000
AND SN<=10000
最好不要一次性查询那么多数据,分批次查询可以减少程序对数据库的访问压力,而且每次访问一万左右的数据我相信是可以做到秒开的!!
解决方案四:
请上传explain plan
解决方案五:
可以修改执行计划,或者创建索引,or增加查询的并行度这个需要oracle查询提示。
时间: 2024-11-26 19:11:29