Oracle库,有一张业务表数据已达千万,如何提高查询速度?

streamlong 发布于 2014/06/16 11:22
阅读 1K+
收藏 0
Oracle数据库,有一张业务表目前数据已达千万。因业务关系,对这张表的操作比较频繁,大多是新增和修改。查询的sql中where后面的条件都建立的有索引,除了有聚合函数的两列外?请问有什么办法提高查询速度吗?现在每次在getResultList()时,耗时头特别长..........请各位大神指点一二。。。。。

以下是问题补充:

@streamlong:调试,把sql拿出来直接到数据库执行,速度蛮快的,但是在程序里面,通过EJB的entityManager获取的query查询得到ResultList时,速度相当慢,最后因为连接超时,报告服务器异常。奇怪的是其他查询也使用了em,怎么没有这种现象呢? (2014/06/16 15:12)
加载中
0
谢小蛋
谢小蛋
1.返回的信息尽量只返回有用的信息列  2.分区  3.索引建立是否有效
streamlong
streamlong
采用的是原生态的sql,返回的是目的列,没有哦建立分区,索引应该是有效的
0
梅开源
梅开源
分表,改逻辑,换图数据库,内存数据库等
streamlong
streamlong
已经上线的项目,换数据库不现实哦。。。。。
0
魔力猫
魔力猫
先把执行计划看一下再说。
streamlong
streamlong
看执行计划是走索引了的。执行计划里还有什么特别需要关注的地方么?
0
铂金胖子
铂金胖子

引用来自“魔力猫”的评论

先把执行计划看一下再说。
+1 ,先看看执行计划吧,oracle 上千万,不算多。
streamlong
streamlong
回复 @魔力猫 : 好多个问题,两眼直冒金星.......我倒。我还是蹲墙角一个个研究下,谢谢:-)
魔力猫
魔力猫
回复 @streamlong : 成本情况呢?SQL的执行频率、每次的代价,读块有多少,有多少物理多少内存,用了多少临时空间,执行计划是否优化过等等。
streamlong
streamlong
看执行计划走索引了的,现在的想到的办法是重建下索引,在看看情况
返回顶部
顶部