
分区后是否每个分区在不同的表空间,且是否查询的是所有数据?如果是,那么可能是由于你在查询的时候,由于数据在不同表空间,导致查询的数据块反而更多了,此时查询速度变慢就可以理解了嘛。另外,创建分区表并不能说是一定可以增加查询速度的,这要看你查询需要的结果集是否集中在尽可能少的数据库中,如果采用了表空间,也就可能降低查询速率了的……
我不是dba,不过看你的SQL目测是一样的查询条件,就位置不同。看了个文章说where条件顺序有影响,oracle是从右往左执行的,你说表数据量大,试试把筛选到最少的条件放到最右边
文章链接:网页链接
这种情况有很多可能性,首先,你的服务器的负载情况会影响到你的数据读取速度的,如果数据库服务器执行的进程过多,会导致查询速度下降很多。
另外,第一次执行同一个SQL的时候,都会比较慢一些,再次执行的时候,由于数据等还在内存内,会速度快很多。
再者,在Oracle中,有共享SQL语句的机制,在第一次解析之后, ORACLE将SQL语句存放在内存中这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享 因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它 和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的执行路径 这样也会大大的提高效率。
首先看看两个表结构上是否有差异,有没有建索引,如果有,索引是否有差异。若是两个表完全相同。
登陆em看一下内存及cpu使用率,是不是占用率较高,oracle的性能除了本身表结构、查询语句会影响以外,还会受到数据库所在服务器的影响,有可能是存在其他程序占用了资源等等。具体的要视情况而定。
以上就是关于Oracle对表分区完以后,为什么查询效率变慢了全部的内容,包括:Oracle对表分区完以后,为什么查询效率变慢了、oracle数据库db link查询极慢,求dba解答、Oracle 视图查询有的时候很慢,有的时候查询很快等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)