同样的sql,相差不大的数据,不同的oracle,查询效率相差10倍多,为什么?
有大神给下解决思路吗,
一个本地的Oracle,一个测试的Oracle,数据是测试之前导出的,相差不大,为什么效率相差那么大
没有合理的索引可供查询使用;主键也不合理,导致现场数据比较混乱/碎块多,所以查询慢。
而导出/导入的数据排列整齐/碎块少,所以查询快。
或者反过来,导出/导入使得有序的数据混乱了。
可能两次执行的执行计划不一样导致的
把本地的sql 和测试的sql 分别放到plsql里面,按f5,然后看sql执行计划,看两边的执行计划是否是一样的。还有就是oracle本身会缓存查询结果。比如你本地
第一次等了好长时间,之后一下就有结果了。但是去其他地方查,第一次还要浪费好长时间。不过看执行计划是最有效的方式。索引不同,版本不同,
数据量大小都会导致执行计划不同。
本地环境和测试环境服务器性能/网络等方面也会有影响