Oracle sql调优积累

关注微信公众号【行走在代码行的寻路人】获取Java相关资料,分享项目经验及知识干货。

1.一条sql不能使用多个or,or用union all替换

2.inner join的效率比left join效率高

使用left join 时系统做的逻辑运算量大于inner join,是因为inner join 只需选出能匹配的记录,left join 不仅需要选出能匹配的,而且还要返回左表不能匹配的,所以多出了这一部分逻辑运算。

直观的看是因为left join并没有在select列表中体现,所以优化器将其砍掉了,而inner join不得不考虑另一个自身表的聚合,如果将select列表中添加一列自连表的列的话应该会使得结果inner join的效率要大于等于left join。

3.预编译的性能比执行sql加参数的性能高

每一种数据库都会尽最大努力对预编译语句提供最大的性能优化.因为预编译语句有可能被重复调用.所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个涵数)就会得到执行.这并不是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配.那么在任何时候就可以不需要再次编译而可以直接执行.而statement的语句中,即使是相同一操作,而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配.

4.索引也有建立的不同方式

针对不同的查询条件建立不同的索引效率更高,单个查询和组合查询建立的索引不同

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值