优化scenarios

1. 外键的列没加索引,当对主表键进行DML, 会锁住整个子表。...........................[@more@]Normal0falsefalsefalseMicrosoftInternetExplorer4 1. 外键的列没加索引,当对主表键进行DML, 会锁住整个子表。

2. 索引失效,如where lower(name)=’ssss’, name上的索引会失效。 或者隐式的数据类型转换:where item_id=12345, 这里item_idvarchar2, 就会先隐式的转换成数字型,索引失效了。

3. PLSQL里的程序给临时表转载了很多数据,但在程序里没有对表进行分析,oracle走了错误的表连接,本来该用hash_join, 用了nested_loop, 严重影响性能。

4. 重新设计索引,可考虑把查询中经常用到的列加到索引中,oracle扫描时就会只扫描index: full index scan,不用扫描数据段了。

5. PLSQL里的多表复杂连接,拆分成几个小的连接,用上临时表保存中间数据。

6. 表的设计问题,example:

三张表几乎都几千万行, 找出在ITEM表里的但没存在LINK, ITEM_LINK 里已经链接好了的ITEM_ID, 下面第一种方法是传统方法,not exists直观, 第二种是用左外连接. 但从两种方法看效率都不高, 都要大量的连接,nested loop. 也许修改表结构是最好的选择了,ITEM表加个字段,LINK_STATUS, ITEM_LINK,LINK已经link,就给这个字段置位.以后再来判断就不需要用not exists来判断是否在LINK,ITEM_LINK表里已link!

(本来要跑10分钟,加了status字段后,30秒。)

7. 找出性能低效的SQL语句:

select ELAPSED_TIME,EXECUTIONS,FIRST_LOAD_TIME,ELAPSED_TIME/decode(executions,0,1,executions)/1000000/60 "Mins", sql_text from V$SQL where module='JDBC Thin Client' order by 4 desc

Normal0falsefalsefalseMicrosoftInternetExplorer4

Normal0falsefalsefalseMicrosoftInternetExplorer4

Continue….

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14377/viewspace-1060120/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14377/viewspace-1060120/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值