欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

您現(xiàn)在的位置:首頁(yè) > 企業(yè)新聞 > 【中培課堂】對(duì) oracle 性能優(yōu)化的一些建議

【中培課堂】對(duì) oracle 性能優(yōu)化的一些建議

2016-05-27 16:52:32 | 來源:中培企業(yè)IT培訓(xùn)網(wǎng)

隨著Oracle數(shù)據(jù)庫(kù)運(yùn)行管理的理解越來越深刻,如今,Oracle數(shù)據(jù)庫(kù)性能調(diào)優(yōu)所產(chǎn)生的積極意義已經(jīng)越來越獲得重視。Oracle性能優(yōu)化保證了Oracle數(shù)據(jù)庫(kù)性能的穩(wěn)定和強(qiáng)化。為此,中培偉業(yè)Oracle數(shù)據(jù)庫(kù)專家陳老師就Oracle的優(yōu)化時(shí)應(yīng)注意的問題進(jìn)行了介紹。
第一個(gè)應(yīng)注意的問題是:注意WHERE子句中的連接順序:
  ORACLE采用自下而上的順序解析WHERE子句,根據(jù)這個(gè)原理,表之間的連接必須寫在其他WHERE條件之前, 那些可以過濾掉最大數(shù)量記錄的條件必須寫在WHERE子句的末尾.
  尤其是“主鍵ID=?”這樣的條件。
第二個(gè)應(yīng)該注意的問題是: SELECT子句中避免使用 ‘ * ‘:
  ORACLE在解析的過程中, 會(huì)將'*' 依次轉(zhuǎn)換成所有的列名, 這個(gè)工作是通過查詢數(shù)據(jù)字典生成的, 這意味著將耗費(fèi)更多的時(shí)間 。
  簡(jiǎn)單地講,語(yǔ)句執(zhí)行的時(shí)間越短越好(尤其對(duì)于系統(tǒng)的終端用戶來說)。而對(duì)于查詢語(yǔ)句,由于全表掃描讀取的數(shù)據(jù)多,尤其是對(duì)于大型表不僅查詢速度慢,而且對(duì)磁盤IO造成大的壓力,通常都要避免,而避免的方式通常是使用索引Index。 
使用索引的優(yōu)勢(shì)與代價(jià)。
優(yōu)勢(shì):

  1)索引是表的一個(gè)概念部分,用來提高檢索數(shù)據(jù)的效率,ORACLE使用了一個(gè)復(fù)雜的自平衡B-tree結(jié)構(gòu). 通常,通過索引查詢數(shù)據(jù)比全表掃描要快. 當(dāng)ORACLE找出執(zhí)行查詢和Update語(yǔ)句的最佳路徑時(shí), ORACLE優(yōu)化器將使用索引. 同樣在聯(lián)結(jié)多個(gè)表時(shí)使用索引也可以提高效率.
  2) 另一個(gè)使用索引的好處是,它提供了主鍵(primary key)的唯一性驗(yàn)證.。那些LONG或LONG RAW數(shù)據(jù)類型, 你可以索引幾乎所有的列. 通常, 在大型表中使用索引特別有效. 當(dāng)然,你也會(huì)發(fā)現(xiàn), 在掃描小表時(shí),使用索引同樣能提高效率.
  代價(jià): 雖然使用索引能得到查詢效率的提高,但是我們也必須注意到它的代價(jià). 索引需要空間來存儲(chǔ),也需要定期維護(hù), 每當(dāng)有記錄在表中增減或索引列被修改時(shí), 索引本身也會(huì)被修改. 這意味著每條記錄的INSERT , DELETE , UPDATE將為此多付出4 , 5 次的磁盤I/O . 因?yàn)樗饕枰~外的存儲(chǔ)空間和處理,那些不必要的索引反而會(huì) 使查詢反應(yīng)時(shí)間變慢.。而且表越大,影響越嚴(yán)重。
  使用索引需要注意的地方:
1、避免在索引列上使用NOT , 
  我們要避免在索引列上使用NOT, NOT會(huì)產(chǎn)生在和在索引列上使用函數(shù)相同的影響. 當(dāng)ORACLE”遇到”NOT,他就會(huì)停止使用索引轉(zhuǎn)而執(zhí)行全表掃描.
2、避免在索引列上使用計(jì)算.
  WHERE子句中,如果索引列是函數(shù)的一部分.優(yōu)化器將不使用索引而使用全表掃描. 舉例:
  復(fù)制代碼 代碼如下:
  低效:SELECT … FROM DEPT WHERE SAL * 12 > 25000;
  高效:SELECT … FROM DEPT WHERE SAL > 25000/12;
3、避免在索引列上使用IS NULL和IS NOT NULL
  避免在索引中使用任何可以為空的列,ORACLE性能上將無法使用該索引.對(duì)于單列索引,如果列包含空值,索引中將不存在此記錄. 對(duì)于復(fù)合索引,如果每個(gè)列都為空,索引中同樣不存在此記錄. 如果至少有一個(gè)列不為空,則記錄存在于索引中.舉例: 如果唯一性索引建立在表的A列和B列上, 并且表中存在一條記錄的A,B值為(123,null) , ORACLE將不接受下一條具有相同A,B值(123,null)的記錄(插入). 然而如果所有的索引列都為空,ORACLE將認(rèn)為整個(gè)鍵值為空而空不等于空. 因此你可以插入1000 條具有相同鍵值的記錄,當(dāng)然它們都是空! 因?yàn)榭罩挡淮嬖谟谒饕兄?所以WHERE子句中對(duì)索引列進(jìn)行空值比較將使ORACLE停用該索引.
  復(fù)制代碼 代碼如下:
  低效:(索引失效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE IS NOT NULL;
  高效:(索引有效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE >=0;
4、注意通配符%的影響
  使用通配符的情況下Oracle可能會(huì)停用該索引。如 :
  復(fù)制代碼 代碼如下:
  SELECT…FROM DEPARTMENT WHERE DEPT_CODE like ‘%123456%'(無效)。
  SELECT…FROM DEPARTMENT WHERE DEPT_CODE = ‘123456'(有效)
5、避免改變索引列的類型.:
  當(dāng)比較不同數(shù)據(jù)類型的數(shù)據(jù)時(shí), ORACLE自動(dòng)對(duì)列進(jìn)行簡(jiǎn)單的類型轉(zhuǎn)換. 假設(shè) EMPNO是一個(gè)數(shù)值類型的索引列. SELECT … FROM EMP WHERE EMPNO = ‘123' 實(shí)際上,經(jīng)過ORACLE類型轉(zhuǎn)換, 語(yǔ)句轉(zhuǎn)化為: SELECT … FROM EMP WHERE EMPNO = TO_NUMBER(‘123') 幸運(yùn)的是,類型轉(zhuǎn)換沒有發(fā)生在索引列上,索引的用途沒有被改變. 現(xiàn)在,假設(shè)EMP_TYPE是一個(gè)字符類型的索引列. SELECT … FROM EMP WHERE EMP_TYPE = 123 這個(gè)語(yǔ)句被ORACLE轉(zhuǎn)換為: SELECT … FROM EMP WHERETO_NUMBER(EMP_TYPE)=123 因?yàn)閮?nèi)部發(fā)生的類型轉(zhuǎn)換, 這個(gè)索引將不會(huì)被用到! 為了避免ORACLE對(duì)你的SQL進(jìn)行隱式的類型轉(zhuǎn)換, 最好把類型轉(zhuǎn)換用顯式表現(xiàn)出來. 注意當(dāng)字符和數(shù)值比較時(shí), ORACLE會(huì)優(yōu)先轉(zhuǎn)換數(shù)值類型到字符類型
6、索引的一些特性
  a. 如果檢索數(shù)據(jù)量超過30%的表中記錄數(shù).使用索引將沒有顯著的效率提高.
  b. 在特定情況下, 使用索引也許會(huì)比全表掃描慢, 但這是同一個(gè)數(shù)量級(jí)上的區(qū)別. 而通常情況下,使用索引比全表掃描要塊幾倍乃至幾千倍!
  除了使用索引,我們還有其他能減少資源消耗的方法:
1、用EXISTS替換DISTINCT:
  當(dāng)提交一個(gè)包含一對(duì)多表信息(比如部門表和雇員表)的查詢時(shí),避免在SELECT子句中使用DISTINCT. 一般可以考慮用EXIST替換, EXISTS 使查詢更為迅速,因?yàn)镽DBMS核心模塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.
  例子:
  以下是復(fù)制代碼時(shí)高效與低效方面的對(duì)比:
  (低效): SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D , EMP E
  WHERE D.DEPT_NO = E.DEPT_NO
  And E.sex =man
  (高效): SELECT DEPT_NO,DEPT_NAME FROM DEPT D
  WHERE EXISTS
  ( SELECT ‘X' FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO
  And E.sex =man

標(biāo)簽: Oracle
主站蜘蛛池模板: 狠狠综合久久久久综合网小蛇 | 脔到她哭H粗话H好爽五星视频 | 天堂约啪| 日本三级吃奶头添泬无码 | 2018天天弄国产大片 | 国产伦精品一区二区三区男技 | 久久久国产精品无码免费专区 | 无遮挡h肉动漫在线观看 | "欧美日韩一区 二区 三区 久久精品" | 亚洲人成人网站色www | 国产成人无码AV在线影院 | 在线亚洲精品国产一区麻豆 | 久久2019中文字幕 | 他一边曰一边吃我奶小说免看 | 午夜九九 | 夫妻的情妇在线观看 | A片无码午夜久久久涩涩 | 一本一道AV无码中文字幕﹣百度 | 久青草无码视频在线观看 | 一区二区无码免费视频网站 | 久久久久夜夜夜综合国产 | 中文字幕日韩一级 | 无码熟妇人妻AV在线网站 | brazzershd欧美情趣丝袜 | 99久久国产综合精品成人影院 | 久久久久青草线综合超碰 | 中文字幕乱码一区二区免费 | 色av永久无码av影院 | 伊人久久无码中文字幕 | 色噜噜亚洲男人的天堂 | 浓毛老太交欧美老妇热爱乱 | 欧美肥婆丰满bbw | 久久精品视频在线观看 | 欧美一道本一区二区三区 | 日本九九热在线观看官网 | 亚洲VA中文字幕无码久久 | 成人国产精品秘?精东传媒 在线观看亚洲AV无码每日更新 | 日本熟妇色熟妇在线视频播放 | 精品国产一卡2卡3卡4卡新区 | 在线无码视频观看草草视频 | 啪啪av大全导航福利 |