亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Oracle數(shù)據(jù)庫SQL語句優(yōu)化要點分析

        2014-08-15 09:45:19趙新民崔海艷
        網(wǎng)絡(luò)空間安全 2014年6期
        關(guān)鍵詞:數(shù)據(jù)庫

        趙新民+++崔海艷

        【摘要】針對Oracle數(shù)據(jù)庫性能受到SQL語句制約的問題,本文針對SQL語句的優(yōu)化要點進行了分析。首先詳細描述了Oracle優(yōu)化器,給出了影響執(zhí)行計劃的因素;其次對SQL語句可優(yōu)化的類型進行了總結(jié)分析,并詳細分析了優(yōu)化的規(guī)則,舉出了SQL實例進行比較。本文對于系統(tǒng)維護人員和數(shù)據(jù)庫分析師都具有一定的積極作用。

        【關(guān)鍵詞】Oracle;數(shù)據(jù)庫;SQL

        1引言

        隨著信息化進程的不斷加快,數(shù)據(jù)庫的應(yīng)用越來越廣泛,信息系統(tǒng)的優(yōu)劣與數(shù)據(jù)庫系統(tǒng)的性能有著直接的關(guān)聯(lián)。隨著數(shù)據(jù)庫規(guī)模的不斷擴大,如何保持數(shù)據(jù)庫應(yīng)用系統(tǒng)高效地運行,受到人們越來越多的關(guān)注。

        2優(yōu)化器

        對于信息管理系統(tǒng)來說,其最關(guān)鍵的核心是數(shù)據(jù)庫系統(tǒng),對于眾多的應(yīng)用系統(tǒng)來說,查詢操作在整個系統(tǒng)中占據(jù)著相當大的比重,也就是說,查詢速度的快慢直接影響著信息管理系統(tǒng)的性能。當數(shù)據(jù)庫的規(guī)模越大,這個特性表現(xiàn)的越明顯,良好的查詢語句對系統(tǒng)性能的提高起著積極的作用。

        2.1Oracle優(yōu)化器

        無論SQL語句的性能如何,最終都要在Oracle數(shù)據(jù)庫中執(zhí)行,Oracle數(shù)據(jù)庫在執(zhí)行SQL語句之前,首先通過優(yōu)化器利用初始化的參數(shù),并利用指定的優(yōu)化方法對執(zhí)行計劃進行分析,并執(zhí)行。

        當前,Oracle優(yōu)化器主要有RBO和CBO兩種優(yōu)化方式。其中RBO是基于規(guī)則的優(yōu)化器,根據(jù)訪問的路徑和訪問路徑的等級去選擇SQL語句的執(zhí)行計劃,假如一條SQL語句有多個路徑可以通過,Oralce會自動選擇等級最低的訪問路徑。RBO優(yōu)化器僅含有幾條在小表上低效利用的索引,無形之中增加了I/O,該優(yōu)化方式效率相對較低;CBO是基于代價的優(yōu)化器,其成本主要由可用訪問路徑、嵌入的提示、對象的統(tǒng)計信息等組成,CBO會選擇成本代價最低的執(zhí)行計劃。當前,CBO優(yōu)化器成為Oracle數(shù)據(jù)庫優(yōu)化的主要組成,CBO的構(gòu)成如圖1所示。

        利用Oracle優(yōu)化器對SQL語句進行分析,在所有的查詢中,有一半經(jīng)過RBO優(yōu)化之后,執(zhí)行的速度會快一點,而另一半則由CBO優(yōu)化后,執(zhí)行的速度最快。從Oracle8i版本以后,RBO優(yōu)化已經(jīng)不再發(fā)展RBO。

        2.2影響執(zhí)行計劃的因素

        影響執(zhí)行計劃的因素較多,總結(jié)起來主要有幾種。

        (1)連接順序。當前,數(shù)據(jù)庫進行數(shù)據(jù)查詢,大部分情況下都需要由若干表連接,一般采取將查詢結(jié)果只有一行記錄的表優(yōu)先。

        (2)訪問路徑。對于路徑的掃描,Oracle優(yōu)化器的方式有簇掃描、索引掃描、行ID掃描、全表掃描、散列掃描等。由于Oracel數(shù)據(jù)庫對I/O的評估原則是“塊”在整個表中所占的比例來確定選取何種掃描路徑。

        (3)連接方式。查詢優(yōu)化的重點是連接操作,內(nèi)表與外表之間進行連接的算法主要有歸并連接、散列連接及嵌套循環(huán)連接,每種連接都有其自己的優(yōu)點。

        (4)成本估算。其成本的代價主要從I/O、CPU和通信三方面進行考慮,其中I/O是最主要的。在成本估算中占的比重最大。

        3優(yōu)化SQL語句

        3.1可優(yōu)化的SQL語句類型

        優(yōu)化器可以優(yōu)化SQL語句的類型主要有幾種。

        (1)簡單語句。對于數(shù)據(jù)表的操作,主要的操作動作有select、update、insert及delete語句,這種類型的語句主要包括from和where。一般來說,可以優(yōu)化的地方主要在where中。其影響效率的問題主要集中在幾個方面:分組或排序過程中包含了過多的中間結(jié)果集、對索引的列使用了全表掃描。

        (2)連接語句。利用多個表相結(jié)合的方式查找相關(guān)的數(shù)據(jù)信息,這也是數(shù)據(jù)庫最常用的方法,由from子句實現(xiàn)多個表的連接,利用where將相關(guān)的條件進行關(guān)聯(lián)。其影響效率的問題主要集中在幾個方面:表連接順序不是最優(yōu)、分組或排序過程包含了過多的中間結(jié)果集、索引列使用了全表掃描等。

        (3)外部連接。該方式與連接語句有相同之處,同樣涉及到多表連接的問題。其影響效率的問題也與連接語句相近。

        (4)復(fù)雜語句。對于select、update、insert及delete語句中的子查詢以select形式存在。該方式的問題是內(nèi)部查詢的效率對外部查詢的效率有影響。

        (5)復(fù)雜查詢。利用組操作符將若干簡單語句結(jié)合起來形成的語句,一般情況下,將語句拆分為上述的四種類型的語句之后再進行優(yōu)化處理。

        對于查詢問題的分析,主要是要盡可能地減少子查詢或者使用子查詢返回的結(jié)果集要盡量地減少。

        3.2優(yōu)化的規(guī)則

        (1)在索引列字段上盡可能地避免使用“!=”、“NULL”、“<>”及“not”等符號,盡可能地不要使用隱式類型的轉(zhuǎn)換。這些符號的使用可能會對索引信息造成影響,進行轉(zhuǎn)變?yōu)槿頀呙?,影響了?shù)據(jù)庫的性能。

        (2)盡可能地不要使用“select * from 表名”?!?”符號代表需要返回所有列,就意味著要掃描所有的返回記錄,收取所有的列名與列值。使Oracle不斷地進行磁盤的讀取及交換。如果需要,將“*”換成具體的列名。

        (3)避免在索引列字段中使用改變列的函數(shù)。當函數(shù)改變了索引列的類型及內(nèi)容時,可能使原來可以使用的索引值變得無法繼續(xù)使用,從而影響了系統(tǒng)的效率。

        (4)綁定變量進行傳值。綁定變量進行傳值與數(shù)據(jù)庫收到語句解析后的內(nèi)容是一致的,Oracle可以在下一條語句到來時直接存入緩存并執(zhí)行,不必再進行解析和生成執(zhí)行過程。

        (5)合理建立索引。良好的索引機制,可以使系統(tǒng)查詢速度更快。

        (6)利用where代替having子句。where子句是在分組之前對條件進行篩選,而Having是分組后進行篩選,分組前篩選可以有效減少分組的時間和資源的消耗。endprint

        比較下面兩個SQL語句:

        語句A:select name , num from department where num not in (select num from school);

        語句B:select name,num from department where not exists(select num from school where department.num=school.num)。

        通過在數(shù)據(jù)庫中執(zhí)行這兩條語句,其結(jié)果是相同的,執(zhí)行語句A時,Oracle首先對school表進行整個掃描,沒有在school上建立num索引,語句B使用了聯(lián)合查詢,對school表進行部分掃描,利用了num列的索引。語句B的效率要高于語句A。

        4結(jié)束語

        本文對Oracle數(shù)據(jù)庫的SQL語句優(yōu)化要點進行了分析,由于篇幅所限,并沒有給出具體的數(shù)據(jù)庫系統(tǒng),只給出了兩個SQL語句的比較。有興趣的讀者,可以在本文的基礎(chǔ)上,對數(shù)據(jù)庫管理系統(tǒng)中的SQL語句進行優(yōu)化處理操作,以達到提高系統(tǒng)效率的目的。

        參考文獻

        [1] 趙夢勤,李秀蘭.Oracle數(shù)據(jù)庫應(yīng)用系統(tǒng)的優(yōu)化策略.計算機工程與應(yīng)用,2003,(27):213-215.

        [2] 王能斌著.數(shù)據(jù)庫系統(tǒng)原理(2000).北京:電子工業(yè)出版社,2001.

        [3] Edward Whalen, Mitchell Schroeter 著;高艷春,周兆確,唐艷軍譯.Oracle 性能調(diào)整與優(yōu)化(第一版).北京:人民郵電出版社,2002.

        [4] 王曉春,趙霧,張巖.Windows 平臺上 Oracle 數(shù)據(jù)庫的系統(tǒng)性能優(yōu)化.計算機工程,2004,30(09):79-81.

        [5] 鄭謙益,居梯.Sybase SQL Server性能優(yōu)化技術(shù)及其應(yīng)用研究.微機發(fā)展,2003,(01):31-33.

        作者簡介:

        趙新民(1974-),男,沈陽師范學(xué)院,大學(xué)本科,法學(xué)學(xué)士,現(xiàn)就職于中國聯(lián)通赤峰分公司信息化服務(wù)中心,從事系統(tǒng)維護、網(wǎng)絡(luò)維護、數(shù)據(jù)庫操作方面工作。

        崔海艷(1975-),女,長春郵電學(xué)院,大學(xué)本科,學(xué)士學(xué)位,現(xiàn)就職于中國聯(lián)通赤峰分公司信息化服務(wù)中心,從事系統(tǒng)維護、網(wǎng)絡(luò)維護、數(shù)據(jù)庫操作方面工作。endprint

        猜你喜歡
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        av免费在线播放视频| 亚洲AV无码成人网站久久精品| 在线视频一区二区日韩国产| 国产好片日本一区二区三区四区| 国产优质av一区二区三区| 国产三级视频不卡在线观看| 男女性杂交内射妇女bbwxz| 欧美日韩亚洲tv不卡久久| 中文字幕亚洲好看有码| 色婷婷精品国产一区二区三区| 精彩视频在线观看一区二区三区| 无套内内射视频网站| 艳妇臀荡乳欲伦交换在线播放| 麻豆国产乱人伦精品一区二区| 日韩精品夜色二区91久久久| 亚洲国产人成综合网站| 中文精品久久久久人妻不卡 | 日韩精品一区二区三区影音视频 | 国产成人乱色伦区| 亚洲国产日韩在线人成蜜芽| 午夜在线观看一区二区三区四区| 蜜桃视频在线观看网址| 国产精品99无码一区二区| 亚洲av无码专区国产乱码不卡| 国产精品成人无码久久久久久| 亚洲一区二区三区精品久久av| 亚洲最新无码中文字幕久久| 大陆极品少妇内射aaaaaa| 免费无码中文字幕A级毛片| 中文字幕日本韩国精品免费观看 | 日韩欧美中文字幕公布| 日本乱偷人妻中文字幕在线| 国产在线视频国产永久视频| 亚洲av性色精品国产| 亚洲亚色中文字幕剧情| 国产免费av片无码永久免费| 亚洲AV无码一区二区三区ba| 日韩av他人妻中文字幕| 亚洲中文字幕精品乱码2021 | 波多野结衣一区二区三区高清| 国产精品成人av电影不卡|