oracle group by效率问题,性能优化-group by的优化
4、group by的優(yōu)化
最好使用同一表中的列,
需求:每個演員所參演影片的數(shù)量-(影片表和演員表)
explain select actor.first_name,actor.last_name,count(*)
from sakila.film_actor
inner join sakila.actor using(actor_id)
group by film_actor.actor_id;
優(yōu)化后的SQL:
explain select actor.first_name,actor.last_name,c.cnt
from sakila.actor inner join (
select actor_id,count(*) as cnt from sakila.film_actor group by actor_id
)as c using(actor_id);
說明:從上面的執(zhí)行計劃來看,這種優(yōu)化后的方式?jīng)]有使用臨時文件和文件排序的方式了,取而代之的是使用了索引。查詢效率老高了。
這個時候我們表中的數(shù)據(jù)比較大,會大量的占用IO操作,優(yōu)化了sql執(zhí)行的效率,節(jié)省了服務(wù)器的資源,因此我們就需要優(yōu)化。
注意:
1、mysql 中using關(guān)鍵詞的作用:也就是說要使用using,那么表a和表b必須要有相同的列。
2、在用Join進(jìn)行多表聯(lián)合查詢時,我們通常使用On來建立兩個表的關(guān)系。其實(shí)還有一個更方便的關(guān)鍵字,那就是Using。
3、如果兩個表的關(guān)聯(lián)字段名是一樣的,就可以使用Using來建立關(guān)系,簡潔明了。
本文同步分享在 博客“cwl_java”(CSDN)。
如有侵權(quán),請聯(lián)系 support@oschina.cn 刪除。
本文參與“OSC源創(chuàng)計劃”,歡迎正在閱讀的你也加入,一起分享。
總結(jié)
以上是生活随笔為你收集整理的oracle group by效率问题,性能优化-group by的优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php约束型,PHP类型约束用法示例
- 下一篇: 循环结构作业c语言,C语言循环结构练习题