真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Oracle中isnull和isnotnull如何優(yōu)化

這篇文章給大家分享的是有關(guān)Oracle中is null和is not null如何優(yōu)化的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、錦江網(wǎng)站維護(hù)、網(wǎng)站推廣。

最近工作的時候遇到了比較大的數(shù)據(jù)查詢,自己的sql在數(shù)據(jù)量小的時候沒問題,在數(shù)據(jù)量達(dá)到300W的時候特別慢,只有自己優(yōu)化sql了,以前沒有優(yōu)化過,所以記錄下來自己的優(yōu)化過程,本次是關(guān)于is  null和is not null的優(yōu)化。所用環(huán)境0racle11g。

現(xiàn)有a表,a表中有字段b,我想查出a表中的b字段is null的數(shù)據(jù)。

select * from a where b is null

我在b字段上建立的索引,但是當(dāng)條件是is null 和is not  null時,執(zhí)行計劃并不會走索引而是全表掃描。此時a表中的數(shù)據(jù)有310w條記錄,執(zhí)行這段查詢花費時間約為0.526秒

優(yōu)化:

通過函數(shù)索引:通過nvl(b,c)將為空的字段轉(zhuǎn)為不為空的c值,這里要確保數(shù)據(jù)中是不會出現(xiàn)c值的。再在函數(shù)nvl(b,c)上建立函數(shù)索引

select * from a where nvl(b,c)=c

此時花費時間約為 0.01秒。

當(dāng)條件為is not null 時同理可以用 nvl(b,c)<>c來代替

Oracle查詢優(yōu)化之子查詢條件優(yōu)化

環(huán)境:oracle 11g

現(xiàn)有a表與b表通過a01字段關(guān)聯(lián),要查詢出a表的數(shù)據(jù)在b表沒有數(shù)據(jù)的數(shù)據(jù);sql如下

select count(1) from (select a.*,(select count(1) from b where b.a01=a.a01) as flag from a) where flag=0

因為flag是虛擬字段沒有走不了索引導(dǎo)致這條sql執(zhí)行起來特別慢 310W條數(shù)據(jù)查總數(shù)花費2秒左右。

利用not exists優(yōu)化sql如下

select count(1) from a where not exists(select 1 from b where a.a01=b.b01)

利用not exists走索引,執(zhí)行花費時間大約為0.2秒

感謝各位的閱讀!關(guān)于“Oracle中is null和is not null如何優(yōu)化”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


分享名稱:Oracle中isnull和isnotnull如何優(yōu)化
網(wǎng)站地址:http://weahome.cn/article/ipehes.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部