调整目标:
u1.减少大表全表扫描
u2.优化索引使用
u3.减少复杂连接的sql
u4.减少动态sql的使用
u5.数据库的优化器
u
跟踪优化SQL语句的方法
评估SQL执行效率
u
u
u
u
u
uSql*plus auto trace
创建执行计划基础表
>@/oracle/product/9.2.0.4/rdbms/admin/utlxplan
>set autotrace on
第一种情况使用索引
>select count(*) from t_pub_jnl_sav
where tran_date = 37965
and clt_seqno = ‘999999999000897’
>Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 SORT (AGGREGATE)
2 1 INDEX (UNIQUE SCAN) OF 'IDXPK_PUB_JNL_SAV' (UNIQUE)
跟踪优化SQL语句的方法
uSql*plus auto trace
第二钟情况没有使用到索引
>select count(*) from t_pub_jnl_sav
where acc1 = ‘605810000000000000’
uExecution Plan
u----------------------------------------------------------
u 0 SELECT STATEMENT Optimizer=CHOOSE
u
SQL使用建议
1) 减少全表扫描,充分使用rowid或索引
2) 减少相同sql访问ORACLE的次数
2) TRUNCATE替代DELETE
3) 减少包含like 、‘*’等sql
4) 在select count(*) 选择记录数,尽量select count索引字段
5)Select list 只select你需要的字段