婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle Index 的三個問題

Oracle Index 的三個問題

熱門標簽:南通防封外呼系統運營商 地圖標注原件 語音電話機器人營銷方案 廣州市400電話辦理 修改高德地圖標注 淮安自動外呼系統開發 宜賓外呼系統廠家 語音電話機器人缺點 百變地圖標注
正在看的ORACLE教程是:Oracle Index 的三個問題。

 索引( Index )是常見的數據庫對象,它的設置好壞、使用是否得當,極大地影響數據庫應用程序和Database 的性能。雖然有許多資料講索引的用法, DBA 和 Developer 們也經常與它打交道,但筆者發現,還是有不少的人對它存在誤解,因此針對使用中的常見問題,講三個問題。此文所有示例所用的數據庫是 Oracle 8.1.7 OPS on HP N series ,示例全部是真實數據,讀者不需要注意具體的數據大小,而應注意在使用不同的方法后,數據的比較。本文所講基本都是陳詞濫調,但是筆者試圖通過實際的例子,來真正讓您明白事情的關鍵。 

  第一講、索引并非總是最佳選擇 

  如果發現Oracle 在有索引的情況下,沒有使用索引,這并不是Oracle 的優化器出錯。在有些情況下,Oracle 確實會選擇全表掃描(Full Table Scan),而非索引掃描(Index Scan)。這些情況通常有: 

  1. 表未做statistics, 或者 statistics 陳舊,導致 Oracle 判斷失誤。 

  2. 根據該表擁有的記錄數和數據塊數,實際上全表掃描要比索引掃描更快。 

  對第1種情況,最常見的例子,是以下這句sql 語句: 


  在未作statistics 之前,它使用全表掃描,需要讀取6000多個數據塊(一個數據塊是8k), 做了statistics 之后,使用的是 INDEX (FAST FULL SCAN) ,只需要讀取450個數據塊。但是,statistics 做得不好,也會導致Oracle 不使用索引。 

  第2種情況就要復雜得多。一般概念上都認為索引比表快,比較難以理解什么情況下全表掃描要比索引掃描快。為了講清楚這個問題,這里先介紹一下Oracle 在評估使用索引的代價(cost)時兩個重要的數據:CF(Clustering factor) 和 FF(Filtering factor). 

  CF: 所謂 CF, 通俗地講,就是每讀入一個索引塊,要對應讀入多少個數據塊。 

  FF: 所謂 FF, 就是該sql 語句所選擇的結果集,占總的數據量的百分比。 

  大約的計算公式是:FF * (CF + 索引塊個數) ,由此估計出,一個查詢, 如果使用某個索引,會需要讀入的數據塊塊數。需要讀入的數據塊越多,則 cost 越大,Oracle 也就越可能不選擇使用 index. (全表掃描需要讀入的數據塊數等于該表的實際數據塊數) 

  其核心就是, CF 可能會比實際的數據塊數量大。CF 受到索引中數據的排列方式影響,通常在索引剛建立時,索引中的記錄與表中的記錄有良好的對應關系,CF 都很小;在表經過大量的插入、修改后,這種對應關系越來越亂,CF 也越來越大。此時需要 DBA 重新建立或者組織該索引。 

  如果某個sql 語句以前一直使用某索引,較長時間后不再使用,一種可能就是 CF 已經變得太大,需要重新整理該索引了。 

  FF 則是Oracle 根據 statistics 所做的估計。比如, mytables 表有32萬行,其主鍵myid的最小值是1,最大值是409654,考慮以下sql 語句: 


  這兩句看似差不多的 sql 語句,對Oracle 而言,卻有巨大的差別。因為前者的 FF 是100%, 而后者的 FF 可能只有 1%。如果它的CF 大于實際的數據塊數,則Oracle 可能會選擇完全不同的優化方式。而實際上,在我們的數據庫上的測試驗證了我們的預測. 以下是在HP 上執行時它們的 explain plan: 

  第一句: 


  已選擇325917行。 


  第二句: 


  顯而易見,第1句沒有使用索引,第2句使用了主鍵索引pk_mytables. FF的巨大影響由此可見一斑。由此想到,我們在寫sql 語句時,如果預先估計一下 FF, 你就幾乎可以預見到 Oracle 會否使用索引。 

[NextPage]

第二講、索引也有好壞

  索引有 B tree 索引, Bitmap 索引, Reverse b tree 索引, 等。最常用的是 B tree 索引。 B 的全稱是Balanced , 其意義是,從 tree 的 root 到任何一個leaf ,要經過同樣多的 level. 索引可以只有一個字段(Single column), 也可以有多個字段(Composite),最多32個字段,8I 還支持 Function-based index. 許多developer 都傾向于使用單列B 樹索引。 

  所謂索引的好壞是指: 

  1,索引不是越多越好。特別是大量從來或者幾乎不用的索引,對系統只有損害。OLTP系統每表超過5個索引即會降低性能,而且在一個sql 中, Oracle 從不能使用超過 5個索引。 

  2,很多時候,單列索引不如復合索引有效率。 

  3,用于多表連結的字段,加上索引會很有作用。 

  那么,在什么情況下單列索引不如復合索引有效率呢?有一種情況是顯而易見的,那就是,當sql 語句所查詢的列,全部都出現在復合索引中時,此時由于 Oracle 只需要查詢索引塊即可獲得所有數據,當然比使用多個單列索引要快得多。(此時,這種優化方式被稱為 Index only access path) 

  除此之外呢?我們還是來看一個例子吧: 

  在 HP(Oracle 8.1.7) 上執行以下語句: 


  一開始,我們有兩個單列索引:I_mytabs1(coid), I_mytabs2(issuedate), 下面是執行情況: 


  可以看到,它讀取了7000個數據塊來獲得所查詢的 6000多行。 

  現在,去掉這兩個單列索引,增加一個復合索引I_mytabs_test ( coid, issuedate), 重新執行,結果如下: 


  可以看到,這次只讀取了300個數據塊。 

  7000塊對300塊,這就是在這個例子中,單列索引與復合索引的代價之比。這個例子提示我們, 在許多情況下,單列索引不如復合索引有效率。 

  可以說,在索引的設置問題上,其實有許多工作可以做。正確地設置索引,需要對應用進行總體的分析。 
1 3 

[NextPage]

第三講、索引再好,不用也是白搭 

  拋開前面所說的,假

[1] [2] 下一頁

正在看的ORACLE教程是:Oracle Index 的三個問題。設你設置了一個非常好的索引,任何傻瓜都知道應該使用它,但是Oracle 卻偏偏不用,那么,需要做的第一件事情,是審視你的 sql 語句。 

  Oracle 要使用一個索引,有一些最基本的條件: 

  1, where 子句中的這個字段,必須是復合索引的第一個字段; 

  2, where 子句中的這個字段,不應該參與任何形式的計算 

  具體來講,假設一個索引是按 f1, f2, f3的次序建立的,現在有一個 sql 語句, where 子句是 f2 = : var2, 則因為 f2 不是索引的第1個字段,無法使用該索引。 

  第2個問題,則在我們之中非常嚴重。以下是從 實際系統上面抓到的幾個例子: 


  以上的例子能很容易地進行改進。請注意這樣的語句每天都在我們的系統中運行,消耗我們有限的cpu 和 內存資源。 

  除了1,2這兩個我們必須牢記于心的原則外,還應盡量熟悉各種操作符對 Oracle 是否使用索引的影響。這里我只講哪些操作或者操作符會顯式(explicitly)地阻止 Oracle 使用索引。以下是一些基本規則: 

  1, 如果 f1 和 f2 是同一個表的兩個字段,則 f1>f2, f1>=f2, f1 

  2, f1 is null, f1 is not null, f1 not in, f1 !=, f1 like ‘%pattern%'; 

  3, Not exist 

  4, 某些情況下,f1 in 也會不用索引; 

  對于這些操作,別無辦法,只有盡量避免。比如,如果發現你的 sql 中的 in 操作沒有使用索引,也許可以將 in 操作改成 比較操作 + union all。筆者在實踐中發現很多時候這很有效。 

  但是,Oracle 是否真正使用索引,使用索引是否真正有效,還是必須進行實地的測驗。合理的做法是,對所寫的復雜的 sql, 在將它寫入應用程序之前,先在產品數據庫上做一次explain . explain 會獲得Oracle 對該 sql 的解析(plan),可以明確地看到 Oracle 是如何優化該 sql 的。 

  如果經常做 explain, 就會發現,喜愛寫復雜的 sql 并不是個好習慣,因為過分復雜的sql 其解析計劃往往不盡如人意。事實上,將復雜的 sql 拆開,有時候會極大地提高效率,因為能獲得很好的優化。當然這已經是題外話了。 

 

上一頁     

上一頁  [1] [2] 

標簽:南平 嘉峪關 通化 池州 聊城 襄陽 南平 股票投資

巨人網絡通訊聲明:本文標題《Oracle Index 的三個問題》,本文關鍵詞  Oracle,Index,的,三個,問題,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle Index 的三個問題》相關的同類信息!
  • 本頁收集關于Oracle Index 的三個問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产日本欧美一区二区| 中文字幕一区二区三区蜜月| 精品国产伦一区二区三区观看方式 | 亚洲大片免费看| 国产传媒日韩欧美成人| 久久久精品欧美丰满| 国产在线精品一区二区夜色| 麻豆精品精品国产自在97香蕉 | 一区二区三区四区五区视频在线观看 | 亚洲欧美综合另类在线卡通| 国产一区不卡视频| 亚洲精品一区二区三区精华液| aaa欧美日韩| 综合在线观看色| 色琪琪一区二区三区亚洲区| 亚洲精品免费电影| 日韩一区二区免费电影| 国产一区二区三区黄视频 | 欧美一级免费大片| 精品久久久久久久久久久久久久久| 一区二区三区在线播放| 欧美精品在线视频| 国产一区中文字幕| 亚洲裸体xxx| 日韩精品中午字幕| 不卡欧美aaaaa| 日本欧美一区二区三区| 精品视频免费在线| 日本欧美在线观看| 99久久久精品| 石原莉奈在线亚洲三区| 久久精品人人做人人爽97| 国产呦萝稀缺另类资源| 国产欧美一区二区精品性| 日本丶国产丶欧美色综合| 精品一区二区三区免费视频| 日韩精品一区二区三区蜜臀| 亚洲免费观看高清完整版在线观看 | 亚洲激情在线播放| 成人激情黄色小说| 亚洲第一狼人社区| 久久精品亚洲精品国产欧美kt∨| 日本道免费精品一区二区三区| 精品综合免费视频观看| 亚洲人精品一区| 国产一区激情在线| 婷婷丁香久久五月婷婷| 国产清纯白嫩初高生在线观看91| 欧美日韩精品免费| 成人av资源站| 极品美女销魂一区二区三区| 午夜影视日本亚洲欧洲精品| 久久综合九色综合97婷婷| 一本色道久久综合精品竹菊| 亚洲电影一级片| 欧美国产视频在线| 91蜜桃在线免费视频| 国产综合久久久久久久久久久久 | 日韩一区二区三区在线视频| 午夜精品福利一区二区三区av| 亚洲一区二区三区小说| 国产精品久久久久久亚洲毛片 | 床上的激情91.| 免费成人在线观看视频| 一区二区三区欧美日韩| 亚洲精品自拍动漫在线| 久久成人18免费观看| 日韩伦理免费电影| 婷婷一区二区三区| 亚洲制服丝袜在线| 中文一区在线播放| 亚洲国产精品久久久男人的天堂| 国产日韩欧美精品在线| 精品制服美女久久| 欧美午夜片在线看| 26uuu另类欧美| 成人一道本在线| 风间由美性色一区二区三区| 狠狠色丁香久久婷婷综合_中| 麻豆精品一区二区av白丝在线| 91偷拍与自偷拍精品| 一本一道综合狠狠老| av成人老司机| 久久久亚洲精华液精华液精华液| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲免费成人av| 国产精品理伦片| 国产精品视频观看| 欧美一级黄色片| 蜜臀av性久久久久蜜臀av麻豆| 国产精品国产精品国产专区不片| 久久午夜老司机| 国产精品白丝jk白祙喷水网站| 老司机免费视频一区二区三区| 美腿丝袜亚洲一区| 成人免费看视频| 在线观看不卡一区| 欧美天堂一区二区三区| 久久综合久久综合久久综合| 欧美经典三级视频一区二区三区| 国产毛片一区二区| av影院午夜一区| 欧美电影一区二区三区| 日韩一区二区在线看片| 麻豆精品久久久| 日本黄色一区二区| 日韩一卡二卡三卡四卡| 国产精品视频免费| 老司机一区二区| 91麻豆国产香蕉久久精品| 亚洲一区在线观看网站| 日本中文字幕一区二区有限公司| 91精品国产色综合久久不卡电影 | 国产精品视频一二| 日韩国产欧美三级| 久久国产福利国产秒拍| 成人h动漫精品一区二区| 中文字幕国产精品一区二区| 亚洲尤物在线视频观看| 狠狠色狠狠色综合| 欧美日韩小视频| 国产精品美女一区二区三区| 一区二区三区电影在线播| 黑人精品欧美一区二区蜜桃| 国产精品一区二区三区99| 国产午夜精品一区二区| 制服丝袜亚洲网站| 色av成人天堂桃色av| wwwwxxxxx欧美| 日韩一级二级三级| 日韩综合一区二区| 欧美激情在线免费观看| 欧美人狂配大交3d怪物一区| 久久成人免费网站| 亚洲精品免费视频| 久久久www成人免费毛片麻豆 | 日韩黄色小视频| 91精品久久久久久久久99蜜臂 | 欧美二区三区91| 成人av电影在线| 日本系列欧美系列| 最新成人av在线| 精品国产一区a| 8x福利精品第一导航| 99re这里只有精品6| 久久99九九99精品| 日日夜夜一区二区| 日本美女视频一区二区| 亚洲欧洲另类国产综合| 精品人伦一区二区色婷婷| 在线视频综合导航| 日韩毛片在线免费观看| 久久久综合视频| 欧美一级在线观看| 欧美三级日韩在线| 色成年激情久久综合| 成人av网站在线| 极品美女销魂一区二区三区| 日韩激情视频网站| 亚洲chinese男男1069| 亚洲欧洲精品一区二区三区 | 日韩不卡一区二区三区| 国产精品免费久久| 久久综合狠狠综合久久激情 | 精品国产乱子伦一区| 9191久久久久久久久久久| 色天使久久综合网天天| 成人福利视频网站| 国产一本一道久久香蕉| 免费成人在线网站| 日韩电影一区二区三区| 亚洲福中文字幕伊人影院| 亚洲日本一区二区三区| 国产精品成人免费精品自在线观看| 精品国产乱码久久久久久蜜臀 | 欧美日韩aaa| 成人黄页毛片网站| 精品一区二区在线视频| 久久国产三级精品| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲精品高清在线| 亚洲精品国产成人久久av盗摄| 国产精品视频第一区| 国产精品久久久久久妇女6080| 国产成人免费在线观看| 亚洲不卡av一区二区三区| 午夜精品福利一区二区三区蜜桃| 美国一区二区三区在线播放| ●精品国产综合乱码久久久久 | 国产91清纯白嫩初高中在线观看 | 成人美女在线观看| 高清不卡一区二区| heyzo一本久久综合| 一本久久a久久精品亚洲| 欧美午夜宅男影院| 欧美成人一区二区三区| 日韩午夜激情免费电影| 欧美一三区三区四区免费在线看| 日韩一区二区中文字幕| 国产精品久久久久久久久久免费看|