(表越大, 提升倍数越大):
这个SQL的优化到这里就结束了, 生产使用的业务SQL也会从接近5分钟降到1~2毫秒, 大概有10几万倍的性能提升,资源消耗基本上可以忽略不计....(注: 在没有结果集返回的情况,与原SQL不完全等价)
扩展知识点:
上面这个改写有个缺点: sql的执行效率受数据分布情况的影响,像下面没有符合条件的记录, 优化器还是会选择全表扫描, 执行时间还是会比较长...all
select max(ID) FROM T5m WHERE OWNER ='SYSTEM'
);
SQL执行时间2~3 毫秒左右:
简洁一点的写法是这样的...in ('SYS','PUBLIC','SYSTEM') group by owner)x;
对于postgresql来说, 跟oracle差不多, 它的简洁写法我是这样写的:
select max...) from
(
select
(select max(id) from t5m b where a.owner=b.owner) as max_id
from
(select regexp_split_to_table