问题描述
- oracle查询速度会因具体的条件变慢
-
select语句的结构完全一样,只是把其中一条where条件由='TCP14'改为='TCP17',
查询速度就由原来的瞬间变成3秒。我查看了TCP14下数据量和TCP17下数据量是差不多的。
请问原因和解决办法
解决方案
这个原因很多,cbo优化器根据代价来计算取最优的方式,你的这个问题可以把执行计划贴上来看看,原因的话很多可能,举个简单的,假如你的表存在10个数据块上,t14的数据存在前2个块上,而t17的数据分别存在第一个块,中间一个块,最后一个块上,那这两种的执行计划很可能就是一个走索引一个走全表扫描
解决方案二:
这个可能与你执行时的环境有关,你再多执行几次看看区别。
按理这个条件的改变不会影响select执行效率的
解决方案三:
这个要看多个方面 可能是执行的时候系统的压力, 还有索引的深度 以及 ='TCP17'这个条件返回的记录数
时间: 2024-09-29 18:50:28