1 数据库性能sql优化策略
- **驱动表选择是否正确。
- 使用索引不合理导致产生大量的逻辑读取**(cpu消耗殆尽)**
- 是否可以创建索引,避免全表扫描。
- 是否可以改写语句或者业务。(not in 到not exists的改写,列为非空)
- 结合各个过滤条件,生成结果集最小的作为驱动,优先执行。
6 max()与min()改写。原始sql SELECT MAX(OBJECT_ID),MIN(OBJECT_ID) FROM T1;
进程如下改写。 select (select MAX(OBJECT_ID) from t1),(select min(OBJECT_ID)
from t1) from dual;
- 尽量较少filter条件。减少过滤。**
- 大量的行迁移和行链接导致的单块读取(db file sequential read)
3.优化null列,创建2种方法,1 create index idx1 on T(nvl(id,1)), create index
idx1 on T(id,1), - 标量子查询优化,(连接列需要存在高效索引)
- 使用crontab手动方式自动采集变量较大表的统计信息。*
- 减少表的访问次数,标量子查询修改为左右连接的方式访问。