【疑惑三、疑惑四解答】
通过上两个问题探索,已经基本确定是
IO
所致。
Myepoch
提出问题,【
SQL1
全表扫描】和【
SQL2
】执行计划【总成本】完全相同,但是为什么执行时间差别那么大呢?
其实,既然是【总成本】,那么他就包涵了很多,大家多数时候误认为【总成本】就是【执行时间成本】,这是个错误的理解,【总成本】包括【
CPU
成本】、【时间成本】和【
IO
成本】等,
在多数情况下,【总成本】和【执行时间变化率】基本趋势相同,但是成本不等价于时间,成本相同,不代表执行时间相同。
我们要这次优化的目的是最小时间,不是最小成本。
Myepoch
提示,因为是老系统改造,表结构已经不能进行变更了,【
adminaccount = '
lgm
'
】的用户确实
lob
文件内数量比较大,对于表结构也只能无奈接受。
其实到这里问题基本被确定了,是因为非常规的表设计所致,为了解决这个问题,我们同时创建两个索引,消解
lob
数据块对查询的影响。
语句如下: