Oracle SQL 性能优化的关键在于搞清楚优化器怎么选、表怎么访问、SQL 怎么写能复用。搞清楚这些,你的查询速度分分钟提上去。嗯,优化器用对了,能省不少资源,响应也快。
优化器的选择挺重要的。早期有个RULE
优化器,按死规则来,比较死板。现在基本都用COST
优化器,它会根据表的统计信息算出成本,选最快的执行路径。你也可以通过ALTER SESSION SET optimizer_mode = 'COST'
临时调整模式,挺灵活的。
访问表的方式也能左右性能。全表扫描适合小表,ORACLE 其实对这种扫描也有优化,比如一次读多个数据块。但大表最好别全表扫,太慢。可以通过索引先拿ROWID
,再精准地找数据,快得多。
共享 SQL 语句是个被多人忽略的点。Oracle 有共享池,SQL 只要字符级完全一致,就能复用,少解析,效率高。要注意哦,空格、换行都算。还有,绑定变量
名也得一样,不然不共享。
如果你能把优化器选好、访问表的方式选对,再加上搞定 SQL 复用,数据库性能一下就上来了。建议你定期跑下ANALYZE
,保持统计信息新鲜。嗯,配合着性能监控工具,用起来会更稳。