<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可以應用 colunm上的index

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

     

    建測試表和Index。

    注意:重點在于帶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)

     

    -- 開頭和結尾都是%,對不起,很難優化

     

    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)

     

    -- 以常量結束,直接寫的時候是不能應用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)

     

    --'以常量結束的,加個reverse 函數,又可以用上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)


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


    網站導航:
     
    主站蜘蛛池模板: 69影院毛片免费观看视频在线 | 中文字幕在线成人免费看| 国产乱子伦精品免费女| 国产一区二区三区免费观在线| 男女猛烈xx00免费视频试看| 亚洲伊人tv综合网色| 国产zzjjzzjj视频全免费 | 一级毛片一级毛片免费毛片| 黄色三级三级免费看| 亚洲无砖砖区免费| 亚洲精品免费在线视频| 亚洲电影唐人社一区二区| 亚洲人成影院在线高清| 亚洲国产精品免费观看| 日本亚洲色大成网站www久久| 亚洲av无码专区首页| 女人裸身j部免费视频无遮挡| 国产视频精品免费视频| 最新国产乱人伦偷精品免费网站| 日本黄色动图免费在线观看| 99re6热视频精品免费观看| 无码av免费毛片一区二区 | 国产精品小视频免费无限app| baoyu777永久免费视频| 99re热精品视频国产免费| 亚洲性线免费观看视频成熟| 在线免费不卡视频| 免费人成网站在线高清| 国产亚洲精AA在线观看SEE| 免费在线观看中文字幕| 亚洲中文字幕日产乱码高清app| 久久青青成人亚洲精品| 亚洲图片中文字幕| 色偷偷亚洲男人天堂| 你懂的网址免费国产| 亚洲大片免费观看| 国产一级大片免费看| 亚洲精品乱码久久久久久蜜桃不卡| 亚洲美女免费视频| 亚洲第一区香蕉_国产a| 97se亚洲国产综合自在线|