国产麻豆精品视频-国产麻豆精品免费视频-国产麻豆精品免费密入口-国产麻豆精品高清在线播放-国产麻豆精品hdvideoss-国产麻豆精品

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

Oracle按照一定順序提取數據

發布時間:  2012/8/30 16:48:28

按照一定順序提取數據研究 create table xxx (n number); insert into xxx values(1);insert into xxx values(2);insert into xxx values(3);insert into xxx values(4);insert into xxx values(5); commit; select * from xxx N
 
1
 
2
 
3
 
4
 
5
 

 如果我們希望按照(2, 4, 1, 3, 5) 提取數據可以select * from xxx where n

in

(select /*+Cardinality(t,0)*/to_number(column_value) from table(mytable(2, 4, 1, 3, 5)) t where rownum>0)

 N
 
2
 
4
 
1
 
3
 
5
 

 我們不能用select * from xxx where n in (2, 4, 1, 3, 5) N
 
1
 
2
 
3
 
4
 
5
 

 效率

explain plan set statement_id='T_TEST' for

select * from xxx where n

in

(select /*+Cardinality(t,0)*/to_number(column_value) from table(mytable(2, 4, 1, 3, 5)) t where rownum>0)

 

Plan hash value: 2336544415

 

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

| Id | Operation                                 | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT                          |          |    1 |    26 |   33   (4)| 00:00:01 |

|*  1 |  HASH JOINSEMI                           |          |    1 |    26 |   33   (4)| 00:00:01 |

|   2 |   TABLEACCESS FULL                       | XXX      |    5 |    65 |    3   (0)| 00:00:01 |

|   3 |   VIEW                                    | VW_NSO_1|     1 |   13 |    29  (0)| 00:00:01 |

|   4 |    COUNT                                  |          |       |      |            |          |

|*  5 |     FILTER                                |          |       |      |            |          |

|   6 |     COLLECTION ITERATOR CONSTRUCTOR FETCH|         |       |       |            |          |

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

 

Predicate Information (identified by operation id):

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

 

   1 - access("N"="TO_NUMBER(COLUMN_VALUE)")

   5 - filter(ROWNUM>0)

 

Note

-----

-    dynamic samplingused for this statement     

 

create index idx_xxx on xxx(n)

 

 

 

Plan hashvalue: 4112344697

 

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

| Id  |Operation                                 | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECTSTATEMENT                          |          |     1 |   26 |    30   (4)| 00:00:01|

|   1 |  NESTED LOOPS                              |          |    1 |    26 |    30  (4)| 00:00:01 |

|   2 |   VIEW                                     | VW_NSO_1|     1 |    13 |   29   (0)| 00:00:01 |

|   3 |    HASH UNIQUE                             |          |    1 |     2 |            |          |

|   4 |     COUNT                                  |          |       |      |            |          |

|*  5 |      FILTER                                |          |       |      |            |          |

|   6 |       COLLECTION ITERATOR CONSTRUCTORFETCH|          |       |      |            |          |

|*  7 |   INDEX RANGE SCAN                         | IDX_XXX  |     1|    13 |     0  (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   5 -filter(ROWNUM>0)

   7 -access("N"="TO_NUMBER(COLUMN_VALUE)")

 

Note

-----

-    dynamic sampling used forthis statement                   

 

 

analyze table xxx compute statistics for table for all indexes for all columns

explain plan set statement_id='T_TEST' for

select * from xxx where n

in

(select /*+Cardinality(t,0)*/to_number(column_value) from table(mytable(2, 4, 1, 3, 5)) t where rownum>0)

select * from table(dbms_xplan.display);

 

Plan hash value: 4112344697

 

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

| Id | Operation                                  | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT                           |          |    1 |    15 |   30   (4)| 00:00:01 |

|   1 |  NESTEDLOOPS                              |          |    1 |    15 |   30   (4)| 00:00:01 |

|   2 |   VIEW                                     | VW_NSO_1|     1 |   13 |    29  (0)| 00:00:01 |

|   3 |    HASH UNIQUE                             |          |    1 |     2 |            |          |

|   4 |     COUNT                                  |          |       |      |            |          |

|*  5 |     FILTER                               |          |       |      |            |          |

|   6 |      COLLECTION ITERATOR CONSTRUCTOR FETCH|         |       |       |            |          |

|*  7 |   INDEX RANGE SCAN                         | IDX_XXX  |     1 |     2 |     0   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   5 - filter(ROWNUM>0)

   7 - access("N"="TO_NUMBER(COLUMN_VALUE)"

 

 

 

這個語句也可以這樣寫

select x.* from xxx x,

((select /*+Cardinality(t,0)*/to_number(column_value) s from table(mytable(2, 4, 1, 3, 5)) t where rownum>0)) m

where x.n=m.s

N
 
2
 
4
 
1
 
3
 
5
 

 

 

 

Plan hashvalue: 2981154701

 

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

| Id  |Operation                                | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECTSTATEMENT                          |         |    1 |    15 |    29  (0)| 00:00:01 |

|   1 |  NESTED LOOPS                             |         |    1 |    15 |    29  (0)| 00:00:01 |

|   2 |   VIEW                                    |        |     1 |    13 |   29   (0)| 00:00:01 |

|   3 |    COUNT                                  |         |      |       |            |          |

|*  4 |     FILTER                                |         |      |       |            |          |

|   5 |      COLLECTION ITERATOR CONSTRUCTORFETCH|         |       |      |            |          |

|*  6 |   INDEX RANGE SCAN                        | IDX_XXX |     1 |    2 |     0   (0)| 00:00:01|

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

 

Predicate Information (identified byoperation id):

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

 

   4- filter(ROWNUM>0)

   6- access("X"."N"="M"."S")

 

去掉提示

explain plan set statement_id='T_TEST' for

select x.* from xxx x,

((select  to_number(column_value) s from table(mytable(2, 4, 1, 3, 5)) t )) m

where x.n=m.s

 

 

 

select * from table(dbms_xplan.display);

 

Plan hash value: 4014781130

 

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

| Id | Operation                             | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT                       |         | 8168 | 32672 |    29  (0)| 00:00:01 |

|   1 |  NESTEDLOOPS                          |         | 8168 | 32672 |    29  (0)| 00:00:01 |

|   2 |  COLLECTION ITERATOR CONSTRUCTOR FETCH|        |       |       |           |          |

|*  3 |   INDEX RANGE SCAN                     | IDX_XXX |     1 |     2 |     0   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   3 - access("X"."N"=TO_NUMBER(VALUE(KOKBF$)))

 

 

 

 

增加數據

 

insert into xxx

select r from

(

select rownum r  from dual  connect by level <= 100

)

where r>5

order by dbms_random.value(1,20)

 

 

explain plan set statement_id='T_TEST' for

select x.* from xxx x,

((select  to_number(column_value) s from table(mytable(2, 4, 1, 3, 5)) t )) m

where x.n=m.s

 

 

 

select * from table(dbms_xplan.display);

 

Plan hash value: 4014781130

 

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

| Id | Operation                             | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT                       |         | 8168 | 32672 |    29  (0)| 00:00:01 |

|   1 |  NESTEDLOOPS                          |         | 8168 | 32672 |    29  (0)| 00:00:01 |

|   2 |  COLLECTION ITERATOR CONSTRUCTOR FETCH|        |       |       |            |          |

|*  3 |   INDEX RANGE SCAN                     | IDX_XXX |     1 |     2 |     0   (0)| 00:00:01 |

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

 

Predicate Information (identified byoperation id):

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

 

   3 - access("X"."N"=TO_NUMBER(VALUE(KOKBF$)))

 

 

增加提示

 

select x.* from xxx x,

((select /*+Cardinality(t,0)*/to_number(column_value) s from table(mytable(2, 4, 1, 3, 5)) t  )) m

where x.n=m.s

N
 
2
 
4
 
1
 
3
 
5
 

 

 

explain plan set statement_id='T_TEST' for

select x.* from xxx x,

((select /*+Cardinality(t,0)*/to_number(column_value) s from table(mytable(2, 4, 1, 3, 5)) t  )) m

where x.n=m.s

 

select * from table(dbms_xplan.display);

 

Plan hash value: 4014781130

 

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

| Id | Operation                             | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT                       |         |    1 |    4 |   29   (0)| 00:00:01 |

|   1 |  NESTEDLOOPS                          |         |    1 |     4 |   29   (0)| 00:00:01 |

|   2 |  COLLECTION ITERATOR CONSTRUCTOR FETCH|        |       |       |            |          |

|*  3 |   INDEX RANGE SCAN                     | IDX_XXX |     1 |     2 |     0   (0)| 00:00:01 |

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

 

Predicate Information (identified byoperation id):

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

 

   3 - access("X"."N"=TO_NUMBER(VALUE(KOKBF$)))

 

 

再來看看

 

select * from xxx where n

in

(select /*+Cardinality(t,0)*/to_number(column_value) from table(mytable(2, 4, 1, 3, 5)) t where rownum>0)

 

 

N
 
1
 
2
 
4
 
5
 
3
 

 

發現這不是我們需要的順序

 

explain plan set statement_id='T_TEST' for

select * from xxx where n

in

(select /*+Cardinality(t,0)*/to_number(column_value) from table(mytable(2, 4, 1, 3, 5)) t where rownum>0)

 

select * from table(dbms_xplan.display);

 

Plan hash value: 4112344697

 

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

| Id | Operation                                  | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT                           |          |    1 |    15 |   30   (4)| 00:00:01 |

|   1 |  NESTEDLOOPS                              |          |    1 |    15 |   30   (4)| 00:00:01 |

|   2 |   VIEW                                     | VW_NSO_1|     1 |   13 |    29  (0)| 00:00:01 |

|   3 |   HASH UNIQUE                            |          |     1 |    2 |            |          |

|   4 |    COUNT                                 |          |       |      |            |          |

|*  5 |     FILTER                               |          |       |      |            |          |

|   6 |      COLLECTION ITERATOR CONSTRUCTOR FETCH|          |       |      |            |          |

|*  7 |   INDEX RANGE SCAN                         | IDX_XXX  |     1 |     2 |     0   (0)| 00:00:01 |

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

 

Predicate Information (identified byoperation id):

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

 

  5 - filter(ROWNUM>0)

   7 - access("N"="TO_NUMBER(COLUMN_VALUE)")

 

 

繼續增加數據

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

select * from table(dbms_xplan.display);

insert into xxx

select r from

(

select rownum r  from dual  connect by level <= 1000000

)

where r>1000

order by dbms_random.value(1,20)

 

 

 

explain plan set statement_id='T_TEST' for

select * from xxx where n member of in_list2('2, 4, 1, 3, 5')

 

Plan hash value: 1759293582

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |     |     1 |     2 |    3   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| XXX  |     1|     2 |     3  (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - filter("N"MEMBER OF"IN_LIST2"('2,4, 1, 3, 5'))

 

analyze table xxx compute statistics for table for all indexes for all columns

 

explain plan set statement_id='T_TEST' for

select * from xxx where n member of in_list2('2, 4, 1, 3, 5')

 

47s

 

select * from table(dbms_xplan.display);

 

Plan hash value: 1759293582

 

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

| Id | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      | 50000 |  195K|   597  (26)| 00:00:08 |

|*  1 |  TABLE ACCESS FULL|XXX  | 50000 |   195K|   597  (26)| 00:00:08 |

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

 

Predicate Information (identified byoperation id):

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

 

   1 - filter("N"MEMBER OF"IN_LIST2"('2, 4, 1, 3, 5'))

 

 

 

 

 

explain plan set statement_id='T_TEST' for

select * from xxx where n

in

(select /*+Cardinality(t,0)*/ to_number(column_value) from table(mytable(2, 4, 1, 3, 5)) t where rownum>0)

 

select * from table(dbms_xplan.display);

 

 

Plan hash value: 4112344697

 

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

| Id | Operation                                  | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT                           |          |    1 |   17 |    32   (4)| 00:00:01 |

|   1 |  NESTEDLOOPS                              |          |    1 |    17 |   32   (4)| 00:00:01 |

|   2 |   VIEW                                     | VW_NSO_1|     1 |   13 |    29  (0)| 00:00:01 |

|   3 |    HASH UNIQUE                             |          |    1 |     2 |            |          |

|   4 |     COUNT                                  |          |       |      |            |          |

|*  5 |     FILTER                                |          |       |      |            |          |

|   6 |      COLLECTION ITERATOR CONSTRUCTOR FETCH|         |       |       |            |          |

|*  7 |   INDEX RANGE SCAN                         | IDX_XXX  |     1 |     4 |     2   (0)| 00:00:01 |

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

 

Predicate Information (identified byoperation id):

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

 

   5 - filter(ROWNUM>0)

   7 - access("N"="TO_NUMBER(COLUMN_VALUE)")

 

 

 

delete from xxx where n>100

 

 

explain plan set statement_id='T_TEST' for

select * from xxx where n member of in_list2('2, 4, 1, 3, 5')

 

select * from table(dbms_xplan.display);

 

 

Plan hash value: 1759293582

 

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

| Id | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      | 50000 |   195K|   597  (26)| 00:00:08 |

|*  1 |  TABLE ACCESS FULL|XXX  | 50000 |   195K|   597  (26)| 00:00:08 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - filter("N"MEMBER OF"IN_LIST2"('2, 4, 1, 3, 5'))

 

通過這個例子,我們明白

1、 當數據量變化很大后,分析變得非常很重要;

2、  不同的sql寫法,執行計劃不同,不經影響效率,還影響其功能;

3、 不能表面理解,需要仔細測試;

4、 執行計劃……

數據存放存放機制與高水位


本文出自:億恩科技【www.artduck.net】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    精品国产一区二区三区久| 免费一级片在线观看| 日韩在线观看视频网站| 久久精品欧美一区二区| 欧美激情一区二区三区在线| 尤物视频网站在线观看| 国产国产人免费视频成69堂| 亚洲 欧美 91| 一级毛片视频在线观看| 天天做人人爱夜夜爽2020毛片| 久草免费资源| 欧美一级视| 91麻豆tv| 日日夜人人澡人人澡人人看免| 欧美另类videosbestsex高清| 青青久久精品国产免费看| 色综合久久天天综合观看| 精品久久久久久综合网| 国产精品1024永久免费视频| 欧美日本免费| 国产欧美精品| 九九免费精品视频| 国产不卡在线观看| 韩国妈妈的朋友在线播放| 毛片高清| 韩国毛片 免费| 精品国产亚洲人成在线| 高清一级片| 国产网站在线| 国产成人啪精品视频免费软件| 999久久66久6只有精品| 一级毛片视频在线观看| 日韩一级黄色| 国产国语对白一级毛片| 国产网站免费| 高清一级片| 国产极品白嫩美女在线观看看| 国产a视频| 日日日夜夜操| 四虎影视库国产精品一区| 精品国产一区二区三区久| 高清一级片| 国产精品自拍在线| 精品在线免费播放| 久久精品免视看国产明星| 日本伦理网站| 精品国产一区二区三区久| 国产91素人搭讪系列天堂| 久久99爰这里有精品国产| 成人av在线播放| 日本特黄一级| 亚洲女人国产香蕉久久精品| 精品毛片视频| 一本高清在线| 日本在线www| 日韩在线观看视频免费| 成人免费网站久久久| 99久久精品国产高清一区二区 | 久草免费在线色站| 日韩在线观看免费| 日韩中文字幕在线观看视频| 国产伦精品一区三区视频| 国产成人精品一区二区视频| 韩国毛片免费大片| 日韩免费片| 日日夜人人澡人人澡人人看免| 中文字幕Aⅴ资源网| 久久99爰这里有精品国产| 久久精品店| 欧美日本免费| 欧美一区二区三区在线观看| 国产不卡高清在线观看视频| 国产成人精品影视| 天天做日日爱夜夜爽| 精品在线免费播放| 亚洲第一页乱| 久久精品大片| 日本特黄特色aa大片免费| 日韩av成人| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩av东京社区男人的天堂| 成人影院久久久久久影院| 人人干人人草| 日韩欧美一二三区| 亚欧成人乱码一区二区| 亚洲第一色在线| 欧美电影免费| 黄色免费三级| 香蕉视频三级| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产不卡精品一区二区三区| 天天做人人爱夜夜爽2020| 国产网站麻豆精品视频| 成人影视在线播放| 高清一级片| 高清一级片| 国产高清视频免费| 日韩字幕在线| 国产不卡在线看| 日韩欧美一及在线播放| 美女免费精品高清毛片在线视| 一级毛片视频在线观看| 亚洲天堂免费观看| 一本高清在线| 美女被草网站| 国产精品123| 青青久久精品国产免费看| 亚洲天堂在线播放| 欧美1卡一卡二卡三新区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 成人影院久久久久久影院| 高清一级片| 毛片成人永久免费视频| 国产高清在线精品一区二区| 国产视频一区二区在线观看| 欧美激情一区二区三区视频| 四虎影视久久| 日日日夜夜操| 国产不卡在线观看| 99色精品| 一级毛片看真人在线视频| 亚洲女人国产香蕉久久精品| 欧美1区| 美女免费精品高清毛片在线视| 日韩一级黄色| 国产精品1024永久免费视频 | 91麻豆国产级在线| 超级乱淫黄漫画免费| 亚洲第一页乱| 国产不卡福利| 国产亚洲精品成人a在线| 欧美1卡一卡二卡三新区| 日本在线www| 久久久久久久网| 99久久精品国产国产毛片| 99色精品| 黄色福利片| 精品久久久久久中文字幕一区 | 台湾毛片| 国产精品自拍在线观看| 99色视频在线| 国产福利免费视频| 亚洲精品影院| 天天做人人爱夜夜爽2020毛片| 91麻豆精品国产自产在线| 天天做日日爱| 尤物视频网站在线观看| 日本特黄特色aaa大片免费| 午夜欧美福利| 亚飞与亚基在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 一级毛片视频在线观看| a级黄色毛片免费播放视频| 国产一区二区精品在线观看| 精品视频一区二区三区| 国产a视频| 成人av在线播放| 麻豆午夜视频| 夜夜操网| 美女免费黄网站| 国产激情视频在线观看| 欧美一级视频免费| 日本乱中文字幕系列| 国产精品1024永久免费视频 | 毛片高清| 亚洲女人国产香蕉久久精品 | 一级毛片看真人在线视频| 久久精品人人做人人爽97| 深夜做爰性大片中文| 毛片高清| 四虎久久精品国产| 九九干| 久久久久久久免费视频| 欧美日本免费| 黄色免费网站在线| 青青久久精品| 国产伦久视频免费观看 视频| 日韩一级精品视频在线观看| 91麻豆精品国产片在线观看| 日日日夜夜操| 天天做日日干| 成人a大片高清在线观看| 精品视频免费在线| 可以免费看污视频的网站| 高清一级片| 国产视频一区二区在线播放| 九九精品久久久久久久久| 天天色成人| 精品国产一区二区三区免费| 国产麻豆精品hdvideoss| 九九精品久久| 日韩一级精品视频在线观看| 日本特黄特色aaa大片免费| 色综合久久天天综合绕观看| 久久精品店| 美女被草网站| 国产麻豆精品| 亚飞与亚基在线观看| 午夜在线亚洲男人午在线| 精品久久久久久中文|