成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Order by之索引優(yōu)化

IT那活兒 / 600人閱讀
Order by之索引優(yōu)化
更多精彩推薦,請(qǐng)關(guān)注我們


   通常我們會(huì)選擇在合適的謂詞條件列添加索引,以達(dá)到加速查詢的效果。今天給大家介紹下以orderby列創(chuàng)建索引加速查詢的例子,話不多說,往下看。

    首先我們利用dba_objects創(chuàng)建一個(gè)測(cè)試表如下:

create table test as select * from dba_objects;

--執(zhí)行多次插入,讓數(shù)據(jù)量達(dá)到千萬級(jí)別

insert into test select * from test;

案例一

  表創(chuàng)建好后執(zhí)行如下語句:

select* from (select * from test order by object_id) where rownum<=20;

  執(zhí)行計(jì)劃如下圖,可以看到走的是全表掃描,執(zhí)行時(shí)間17.58s。這也是意料之中的。

  當(dāng)然我們已經(jīng)說了今天介紹的是以orderby列創(chuàng)建索引加速查詢的例子,先把索引建上:

createindex index_tt on test(object_id);

  再次執(zhí)行上述語句,發(fā)現(xiàn)執(zhí)行計(jì)劃仍是全表掃描,sql執(zhí)行效率沒有任何變化。在這里我們修改下object_id列的屬性為非空:

altertable test modify object_id not null;

  然后執(zhí)行上述語句,執(zhí)行計(jì)劃如下圖,可以發(fā)現(xiàn)現(xiàn)在使用到了我們剛剛創(chuàng)建的索引,sql執(zhí)行時(shí)間只需0.13s,sql執(zhí)行效率大幅提升。


案例二

  在實(shí)際生產(chǎn)中我們遇到的sql要比案例一復(fù)雜的多,接下來我們看一個(gè)復(fù)雜一點(diǎn)的案例:

selectobject_id,object_type from (select * from test where object_type like%TABLE% order by object_id) where rownum<=20;

  案例二中sql加了where條件,且我們可以條件的object_type列的選擇性非常差,不適合建立索引。執(zhí)行上述語句后執(zhí)行計(jì)劃如下,仍然使用到了我們剛剛建立在orderby列的索引。

  那么這條語句還有沒有優(yōu)化空間呢,我們嘗試在object_id和object_type列建立復(fù)合索引如下:

createindex index_tt1 on test(object_id,object_type);

  再次執(zhí)行上述案例語句,執(zhí)行計(jì)劃走了剛剛創(chuàng)建的復(fù)合索引,執(zhí)行效率也所有提升。


總結(jié)

  • 索引是有序的,而當(dāng)sql中有order by時(shí),可以考慮在order by字段列建立索引以提高語句執(zhí)行效率;

  • 在Oracle中null被定義為無限大,且null不等于null,故在索引中不會(huì)存有與null值對(duì)應(yīng)的條目,在上述案例中如果不修改object_id列屬性為not null,優(yōu)化器無法確定該列是否有null值,優(yōu)化器仍然會(huì)選擇全表掃描;

  • 當(dāng)語句比較復(fù)雜且?guī)е^詞條件時(shí),可以結(jié)合order by列建立復(fù)合索引。



發(fā)現(xiàn)“在看”和“贊”了嗎,戳我試試吧



文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130040.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<