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.索引也有建立的不同方式

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

发布了101 篇原创文章 · 获赞 10 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/WMY1230/article/details/89296848
今日推荐