<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 119, comments - 62, trackbacks - 0, articles - 0

    1、盡量不要使用 like '%..%'

    2、對于 like '..%..' (不以 % 開頭),Oracle可以應(yīng)用 colunm上的index

    3、對于 like '%...' 的 (不以 % 結(jié)尾),可以利用 reverse + function index 的形式,變化成 like '..%' 代碼

     

    建測試表和Index。

    注意:重點(diǎn)在于帶reverse的function index。同時,一定要使用CBO才行......

     

    SQL> select reverse('123') from dual;

    REVERSE('123')

    --------------------------------

    321

    1 row selected.

     

    SQL> create table test_like as select object_id,object_name from dba_objects;

    Table created.

     

    SQL> create index test_like__name on test_like(object_name);

    Index created.

     

    SQL> create index test_like__name_reverse on test_like(reverse(object_name));

    Index created.

     

    SQL> analyze table test_like compute statistics for table for all indexes;

    Table analyzed.

     

    SQL> set autot trace

     

    --常量開頭的like , 會利用index ,沒問題......

    SQL> select * from test_like where object_name like AS%';

    Execution Plan

    ----------------------------------------------------------

    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=655 Bytes=15720)

    1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST_LIKE' (Cost=2 Card=655Bytes=15720)

    2 1 INDEX (RANGE SCAN) OF 'TEST_LIKE__NAME' (NON-UNIQUE) (Cost=2 Card=118)

     

    -- 開頭和結(jié)尾都是%,對不起,很難優(yōu)化

     

    SQL> select * from test_like where object_name like '%%';

     

    Execution Plan

    ----------------------------------------------------------

    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=655 Bytes=15720)

    1 0 TABLE ACCESS (FULL) OF 'TEST_LIKE' (Cost=6 Card=655 ytes=15720)

     

    -- 以常量結(jié)束,直接寫的時候是不能應(yīng)用index的

    SQL> select * from test_like where object_name like '%S';

    Execution Plan

    ----------------------------------------------------------

    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=655 Bytes=15720)

    1 0 TABLE ACCESS (FULL) OF 'TEST_LIKE' (Cost=6 Card=655 Bytes=15720)

     

    --'以常量結(jié)束的,加個reverse 函數(shù),又可以用上index了'

    SQL> select * from test_like where reverse(object_name)like reverse('%AS');

    Execution Plan

    ----------------------------------------------------------

    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=655 Bytes=15720)

    1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST_LIKE' (Cost=2 Card=655 Bytes=15720)

    2 1 INDEX (RANGE SCAN) OF 'TEST_LIKE__NAME_REVERSE' (NON-UNIQUE) (Cost=2 Card=118)


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 337p日本欧洲亚洲大胆人人| 久久午夜夜伦鲁鲁片免费无码 | 久久亚洲国产成人影院网站 | 亚洲国产综合AV在线观看| 亚洲欧美第一成人网站7777| 黄色网页在线免费观看| 青娱乐免费视频在线观看| 亚洲欧洲一区二区三区| 亚洲AV成人噜噜无码网站| 一级毛片免费播放视频| 成年人在线免费看视频| 亚洲av色影在线| 免费人成网站永久| 在线观看免费为成年视频| 亚洲高清日韩精品第一区| 一个人免费观看www视频| 中文字幕亚洲图片| 免费播放美女一级毛片| 最新免费jlzzjlzz在线播放| 亚洲免费网站观看视频| 亚洲免费日韩无码系列| 爱丫爱丫影院在线观看免费| 亚洲v国产v天堂a无码久久| 亚洲一线产品二线产品| 免费人成在线观看69式小视频| 亚洲精品乱码久久久久66| 亚洲高清乱码午夜电影网| 国产精品免费一级在线观看| 亚洲国语在线视频手机在线| 免费国产成人午夜在线观看| 国产一级高清免费观看| 亚洲精品国产精品| 亚洲福利在线播放| 久久青草免费91线频观看不卡 | 日韩精品一区二区亚洲AV观看| 视频免费1区二区三区| 无码人妻精品中文字幕免费东京热| 区久久AAA片69亚洲| 久久久久久精品成人免费图片| 亚洲大码熟女在线观看| 亚洲免费观看视频|