成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

高手閑談Oracle索引掃描

數據庫 Oracle
這里介紹即使通過Oracle索引掃描取出的數據比較多,效率還是很高的,因為這只會在索引中讀取。

Oracle還是比較常用的,于是我研究了一下Oracle索引掃描,在這里拿出來和大家分享一下,希望對大家有用。我們先通過index查找到數據對應的rowid值(對于非***索引可能返回多個rowid值),然后根據rowid直接從表中得到具體的數據,這種查找方式稱為Oracle索引掃描或索引查找(index lookup)。一個rowid***的表示一行數據,該行對應的數據塊是通過一次i/o得到的,在此情況下該次i/o只會讀取一個數據庫塊。

在索引中,除了存儲每個索引的值外,索引還存儲具有此值的行對應的ROWID值。Oracle索引掃描可以由2步組成:
(1) 掃描索引得到對應的rowid值。
(2) 通過找到的rowid從表中讀出具體的數據。

每步都是單獨的一次I/O,但是對于索引,由于經常使用,絕大多數都已經CACHE到內存中,所以第1步的I /O經常是邏輯I/O,即數據可以從內存中得到。但是對于第2步來說,如果表比較大,則其數據不可能全在內存中,所以其I/O很有可能是物理I/O,這是一個機械操作,相對邏輯I/O來說,是極其費時間的。所以如果多大表進行索引掃描,取出的數據如果大于總量的5% -- 10%,使用索引掃描會效率下降很多。

如下列所示:

  1. SQL> explain plan for select empno, ename from emp where empno=10;  
  2. Query Plan  
  3. SELECT STATEMENT [CHOOSE] Cost=1 
  4. TABLE ACCESS BY ROWID EMP [ANALYZED]  
  5. INDEX UNIQUE SCAN EMP_I1 

注意TABLE ACCESS BY ROWID EMP部分,這表明這不是通過FTS存取路徑訪問數據,而是通過rowid lookup存取路徑訪問數據的。在此例中,所需要的rowid是由于在索引查找empno列的值得到的,這種方式是INDEX UNIQUE SCAN查找,后面給予介紹,EMP_I1為使用的進行索引查找的索引名字。

但是如果查詢的數據能全在索引中找到,就可以避免進行第2步操作,避免了不必要的I/O,此時即使通過Oracle索引掃描取出的數據比較多,效率還是很高的,因為這只會在索引中讀取。所以上面我在介紹基于規則的優化器時,使用了select count(id) from SWD_BILLDETAIL where cn <'6',而沒有使用select count(cn) from SWD_BILLDETAIL where cn <'6'。因為在實際情況中,只查詢被索引列的值的情況極為少,所以,如果我在查詢中使用count(cn),則不具有代表性。

  1. SQL> explain plan for select empno from emp where empno=10; -- 只查詢empno列值  
  2. Query Plan  
  3. SELECT STATEMENT [CHOOSE] Cost=1 
  4. INDEX UNIQUE SCAN EMP_I1 

進一步講,如果sql語句中對索引列進行排序,因為索引已經預先排序好了,所以在執行計劃中不需要再對索引列進行排序

  1. SQL> explain plan for select empno, ename from emp  
  2. where empno > 7876 order by empno;  
  3. Query Plan  
  4. SELECT STATEMENT [CHOOSE] Cost=1 
  5. TABLE ACCESS BY ROWID EMP [ANALYZED]  
  6. INDEX RANGE SCAN EMP_I1 [ANALYZED] 

從這個例子中可以看到:因為索引是已經排序了的,所以將按照索引的順序查詢出符合條件的行,因此避免了進一步排序操作。

【編輯推薦】

  1. 代碼講解Oracle可選擇性
  2. Oracle管理工具Oracle SQL Handler功能一覽
  3. 美國司法部公開支持Oracle收購Sun
  4. 閑談Oracle執行計劃的步驟順序
  5. 六分鐘學會Oracle全表掃描
責任編輯:佚名 來源: cnbeta
相關推薦

2009-11-16 17:33:21

重做Oracle日志文

2010-04-08 10:57:04

Oracle編程

2009-04-10 14:38:17

Oracle高手位圖索引

2010-11-15 15:20:13

Oracle索引掃描

2009-11-11 09:40:53

Oracle索引掃描

2009-11-10 16:00:05

Oracle執行計劃

2010-04-07 10:02:31

2011-07-19 13:08:10

2009-11-17 10:20:01

Oracle Spat

2009-11-17 15:59:25

Oracle物化視圖

2009-10-29 16:57:05

Oracle傳輸表空間

2010-04-14 16:22:42

Oracle 9i

2010-04-14 16:45:29

Oracle 9i全索

2009-11-02 18:56:49

調整Oracle數據庫

2010-04-15 16:16:57

Oracle數據庫應用

2010-10-26 17:34:03

Oracle索引

2010-03-17 14:26:40

云計算

2009-11-12 12:42:35

Visual Stud

2009-11-17 13:49:46

Oracle prim

2011-03-11 16:32:33

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩综合 | 国产在线色| 高清一区二区视频 | 亚洲少妇综合网 | 免费av电影网站 | 国产毛片视频 | 色妹子综合网 | www.狠狠操 | 欧美精品乱码99久久影院 | 中文字幕视频在线观看 | 免费国产精品久久久久久 | 伊人久久麻豆 | 免费国产一区二区 | 狠狠爱免费视频 | 精品视频久久久 | 久久中文字幕在线 | 天天综合永久入口 | 日韩一区二区三区在线观看 | 国产激情精品 | 国产欧美一区二区三区另类精品 | 狠狠入ady亚洲精品经典电影 | 久久久高清 | 嫩草黄色影院 | 91网在线观看 | 狠狠操狠狠干 | 一区二区三区成人 | 国产亚洲网站 | 国产激情在线播放 | 天天综合亚洲 | 精品久久久久香蕉网 | 国产激情精品一区二区三区 | 国产午夜高清 | 久久久久黑人 | 久久不卡日韩美女 | 免费视频99 | 翔田千里一区二区 | 日韩激情免费 | 国产一级视频在线观看 | 免费观看毛片 | 国产精品久久久久久久久久 | 中文字幕一区二区三区四区 |