《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于Oracle數據庫的SQL語句優化
基于Oracle數據庫的SQL語句優化
來源:微型機與應用2011年第21期
李展濤,曹英忠
(桂林理工大學 信息科學與工程學院,廣西 桂林 541004)
摘要: 通過分析Oracle數據庫執行SQL語句的過程,采用比較SQL語句優化之前和優化之后的執行時間和調用的數據塊數量方法來判斷優化效果,最后得到消耗時間少和調用數據塊少的SQL語句。
Abstract:
Key words :

摘  要: 通過分析Oracle數據庫執行SQL語句的過程,采用比較SQL語句優化之前和優化之后的執行時間和調用的數據塊數量方法來判斷優化效果,最后得到消耗時間少和調用數據塊少的SQL語句。
關鍵詞: Oracle數據庫;優化;優化器;索引

 隨著信息化技術在各行業的廣泛應用,Oracle數據庫也越來越多地被使用到很多關鍵領域,成為國內高端數據庫市場的主流產品和眾多行業信息化系統的主要支柱。如何充分利用Oracle的各種功能來提高數據庫的可用性,如何提高數據庫的數據查詢響應時間以及如何診斷數據庫出現的問題已經成為不斷提高Oracle應用水平和提高Oracle數據庫應用系統性能的關鍵[1]。
1 SQL查詢過程及優化器
1.1 SQL查詢語句的執行過程[2]

 查詢優化最重要的就是對SQL語句進行優化。調整SQL對性能的改善要比調整其他方面明顯得多。理解SQL語句的執行過程有助于更好地對其進行優化。SQL語句在Oracle中是自動執行的,絕大多數用戶不需要關心各個階段的執行細節。但是,對執行的各個階段的了解會有助于快速找到性能低下的SQL語句,幫助書寫出更高效的SQL語句,進而解決問題。幾乎所有的SQL語句都分為語法分析、執行、讀取數據三大階段進行處理[3]。SQL查詢語句的執行過程如圖1所示。

1.2 Oracle查詢優化器[4]
 SQL是一種非過程化的語言,用戶只需要發送取出數據的命令,對于數據的取出方式(如是通過索引還是全表掃描),則由數據庫的優化器決定。Oracle的優化器用來決定SQL訪問數據的有效路徑,使語句執行所需要的開銷最小。在Oracle的發展過程中,一共開發過兩類優化器:基于規則的優化器和基于成本的優化器。它們之間的不同之處主要在于取得代價的方法與衡量代價的大小不同。
1.3 SQL查詢語句的執行計劃
 Oracle要實現許多步驟才能完成SQL查詢語句的執行,優化器將這些步驟組合在一起稱為SQL查詢語句的執行計劃。從執行計劃中可以看出數據庫是如何執行查詢語句的,判斷出查詢語句的執行是否高效,從而制定查詢的優化方案。獲取執行計劃的方法有以下兩種:(1)用Explain plan命令對語句的執行過程的一些信息進行統計,Explain plan用來顯示優化器使用的執行計劃而不實際運行查詢;(2)用Set Autotrace動態查看每個SQL語句的執行計劃,Autotrace可以查看會話中每個SQL語句的執行計劃。SQL自動地進行Explain plan的工作,不用維護plan table表,因此使用非常方便。
2 系統優化措施
 以具體的實例來說明系統優化問題以及調整方法。在某電子產品售后服務系統中,為加強對售后維修點備件使用情況的精確管理,庫房發貨人員對出庫的每件備件粘貼一個唯一的一式兩聯條碼,一聯粘貼在發出的好備件上,另一聯粘貼到從用戶那里返回的壞備件上。發貨業務和備件條碼管理有關的E-R圖如圖2所示。
這個系統中有一個查詢出庫信息詳單的視圖,該視圖在系統運行初期的查詢速度較快,但隨著時間推移,數據量增加,其中有些表的數據量已達20萬行以上,導致該視圖的查詢速度明顯變慢,而由于資金等各方面的原因,短期內很難從硬件方面對系統進行升級。因此決定在其運行的Oracle 9i平臺上進行優化。在進行優化前,該視圖的查詢時間為1′07″左右,運行的硬件環境為:P42.66、IGB內存、240 GB普通IDE硬盤。在SQL*Plus中優化前的運行時間如圖3所示。

 

 

2.1 優化SQL語句
2.1.1 分析SQL語句的執行計劃

 T1、T2、T3都是大表,且在T1表上一個組合索引:T1(C1,C2),注意C1列為索引的引導列。對于查詢::Select T1.C4 from T1,T2,T3 where T2.C4=6 and T1.C1=T2.C1 and T1.C2=T3.C2 and T3.C3=7,跟蹤該查詢的執行計劃如圖4所示。

 分析圖4查詢計劃,找出各個表之間的關聯關系,從而得到執行計劃中哪個表為驅動表。在執行計劃中,需要知道哪個操作是先執行的,哪個操作是后執行的,這對于判斷哪個表為驅動表有用處。
 執行計劃的第3列,即字母部分,每列值的左面有空格作為縮進字符。在該列值左邊的空格越多,說明該列值的縮進越多,該列值也越靠右。如圖4的執行計劃所示:第一列值為6的行的縮進最多,即該行最靠右;第一列值為4、5的行的縮進一樣,其靠右的程度也一樣,但是第一列值為4的行比第一列值為5的行靠上;在上下關系方面,只對連續的、縮進一致的行有效。對于NESTED LOOPS部分,最右、最上的操作是TABLE  ACCESS(FULL)OF’T2’,所以這一操作先執行,該操作對應的T2表為第一個驅動表(外部表),T1表即為內部表。T2與T1表做嵌套循環后生成了新的row source,對該row source進行排序后,與T3表對應的排了序的row source(應用了T3.C3=7限制條件)進行MERGEJOIN連接操作。所以由此可以得出如下事實:T2表先與T1表做嵌套循環,然后將生成的row source與T3表做排序合并連接。通過分析上面的執行計劃,不能認為T3表一定在T1、T2表之后才被讀取,事實上,T2表有可能與T3表同時被讀入內存,因為將表中的數據讀入內存的操作可能為并行的。
 事實上許多操作可能為交叉進行,因為Oracle讀取數據時,如果就是需要一行數據也是將該行所在的整個數據塊讀入內存,而且還有可能為多塊讀。看執行計劃時,其關鍵不是看哪個操作先執行,哪個操作后執行,而關鍵是看表之間連接的順序(如需知道哪個為驅動表,這需要從操作的順序進行判斷)、使用了何種類型的關聯及具體的存取路徑(如判斷是否利用了索引),在從執行計劃中判斷出哪個表為驅動表后,根據掌握的知識判斷該表作為驅動表。在這個例子中,T2為驅動表,表的連接順序為(T2->T1)->T3,查詢的過程中也使用到了T1表中的索引,因此,Oracle優化器對其進行的優化效果是比較好的。如果分析了執行計劃發現不合適,就要對SQL語句進行更改,或用Oracle提供的提示(Hints)使優化器可以選擇正確的驅動表,以更為合理的順序進行表的連接。
2.1.2 使用提示(Hints)干預執行計劃[5]
 基于成本的優化器智能化程度很高,絕大多數情況下它能對SQL進行合理地優化,減輕了DBA的負擔。但有時受到一些因素的影響,優化器也會選擇很差的執行計劃,使某個語句的執行變得奇慢無比。此時就需要DBA進行人為的干預,告訴優化器使用所指定的存取路徑或連接類型生成執行計劃,從而使語句高效地運行。例如,如果認為對于一個特定的語句,執行全表掃描要比執行索引掃描更有效,則就可以指示優化器使用全表掃描。在Oracle中,是通過為語句添加Hints(提示)來實現干預優化器優化的目的。Hints是Oracle提供的一種機制,用來告訴優化器按照技術人員告訴它的方式生成執行計劃:
 (1)使用的優化器的類型。
 (2)基于代價的優化器的優化目標,是all_rows還是first_rows。
 (3)表的訪問路徑,是全表掃描,還是索引掃描,還是直接利用rowid。
 (4)表之間的連接類型。
 (5)表之間的連接順序。
 (6)語句的并行程度。
 Hints只應用在其所在SQL語句塊上,對其他SQL語句或語句的其他部分沒有影響。除了“RULE”提示外,一旦使用別的提示,語句就會自動地改為使用CBO優化器,此時如果數據字典中沒有統計數據,就會使用缺省的統計數據。所以如果使用CBO或Hints提示,則最好對表和索引進行定期的分析。
 對于表的訪問,可以使用兩種Hints:FULL和ROWID。FULL提示告訴Oracle使用全表掃描的方式訪問指定表。例如:
 SELECT/*+FULL(EMPLOYEE)*/
 FROM EMPLOYEE WHERE EMP_NO=9527:
 索引Hints告訴Oracle使用基于索引的掃描方式,不必說明具體的索引名稱。例如:
 SELECT/*+INDEX(LODGING)*/LODGING
 FROM LODGING
 WHERE MANAGER=’BILL GATES’;
 使用Hints對Oracle優化器缺省的執行路徑進行手工修改是一個很有技巧性的工作,一般建議只針對特定的、少數的SQL進行Hints的優化。絕大多數情況下,只要SQL書寫規范,Oracle查詢優化器的工作情況是相當理想的。Hints提示雖然能帶來一些方便,但是不能濫用,因為這種方法過于復雜,缺乏必要的通用性和應變能力,同時增加了維護上的代價。
 調整SQL語句后的查詢時間圖5所示。

 目前數據庫規模越來越大,數據量呈指數級上升,使數據庫的性能越來越重要。Oracle數據庫內部結構復雜,影響系統性能因素較多,但在系統硬件不變的情況下,SQL語句的優化是性能得以提高的根本。但優化并不能一勞永逸,隨著表結構的改變和數據量的增加,優化也必須實時調整。
參考文獻
[1] 卞榮兵.基于ORACLE數據庫性能優化的研究[J].應用技術,2002(9):36-38.
[2] 鐘小權.Oracle數據庫的SQL語句優化[J].計算機與現代化,2011(3).124-126.
[3] 谷小秋,李德昌.索引調整優化oracle 9i工作性能的研究[J].計算機工程與應用,2005,26:174-176.
[4] 路川.Oracle 10g寶典[M].北京:電子工業出版社,2009.
[5] 仇道霞.Oracle數據庫性能調整優化[J].山東輕工業學報,2010,24(3).52-54.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品欧美精品| 国内外成人免费视频| 久久偷窥视频| 亚洲电影一级黄| 欧美亚洲免费电影| 亚洲性夜色噜噜噜7777| 久久精品五月| 99视频日韩| 在线免费高清一区二区三区| 欧美成年人网| 欧美成人免费大片| 99视频一区| 亚洲高清在线观看| 在线免费观看视频一区| 国产一区二区日韩精品| 免费国产自线拍一欧美视频| 久久亚洲综合网| 亚洲与欧洲av电影| 永久免费精品影视网站| 国产精品久久影院| 欧美系列电影免费观看| 国产一区二区按摩在线观看| 欧美精品在线一区二区三区| 99亚洲视频| 亚洲另类在线视频| 亚洲看片网站| 亚洲午夜伦理| 亚洲激情一区二区三区| 欧美一区二区三区在线看| 亚洲精品在线三区| 欧美精品在欧美一区二区少妇| 欧美精品二区三区四区免费看视频| 欧美色道久久88综合亚洲精品| 欧美国产在线电影| 在线亚洲伦理| 久久国内精品自在自线400部| 夜夜嗨一区二区三区| 久久精品1区| 激情六月婷婷久久| 欧美色欧美亚洲另类七区| 在线视频欧美精品| 尤物yw午夜国产精品视频明星| 在线一区二区三区做爰视频网站| 极品少妇一区二区三区精品视频| 欲色影视综合吧| 久久精品二区亚洲w码| 黄色小说综合网站| 欧美一级片久久久久久久| 欧美大学生性色视频| 国产亚洲精品一区二区| 亚洲欧美日韩国产成人精品影院| 亚洲激情视频在线观看| 麻豆精品一区二区av白丝在线| 亚洲人成绝费网站色www| 日韩午夜电影在线观看| 欧美日本成人| 亚洲国产精品一区二区三区| 国产精品久久久久毛片大屁完整版| 另类av一区二区| 欧美性猛交视频| 亚洲欧美日韩中文在线制服| 日韩一区二区精品| 亚洲日本va午夜在线电影| 精品动漫3d一区二区三区免费| 欧美久久精品午夜青青大伊人| 国产精品日韩电影| 免费影视亚洲| 国产精品私房写真福利视频| 欧美成人亚洲| 亚洲精品在线免费观看视频| 亚洲视频在线一区观看| 午夜精品久久久久久99热| 羞羞答答国产精品www一本| 老司机免费视频久久| 国产精品色网| 蜜臀久久99精品久久久画质超高清| 欧美日韩国产另类不卡| 久久女同互慰一区二区三区| 欧美精品一区二区在线播放| 亚洲视频在线观看视频| 欧美日韩在线视频首页| 日韩网站在线| 欧美成人69av| 9色精品在线| 欧美国产乱视频| 欧美日韩亚洲一区二区三区四区| 欧美激情综合网| 久久精品视频免费播放| 亚洲婷婷综合久久一本伊一区| 欧美日韩视频在线一区二区| 国产伦精品一区二区三区四区免费| 亚洲国内高清视频| 欧美日韩在线播放三区四区| 亚洲美女诱惑| 性做久久久久久久免费看| 免费在线亚洲欧美| 欧美大片在线看| 久久久久国产一区二区三区四区| 蜜桃精品久久久久久久免费影院| 亚洲国产精品ⅴa在线观看| 国产一区二区三区四区在线观看| 亚洲春色另类小说| 一区二区国产精品| 香蕉成人伊视频在线观看| 国内一区二区三区| 欧美三区美女| 性18欧美另类| 欧美绝品在线观看成人午夜影视| 亚洲第一黄网| 国产精品电影网站| 亚洲综合清纯丝袜自拍| 欧美日韩在线不卡| 欧美国产日产韩国视频| 亚洲精品久久久蜜桃| 国产精品揄拍一区二区| 中文av一区二区| 亚洲人体偷拍| 国产一区二区三区日韩| 久久亚洲精品伦理| 免费视频一区二区三区在线观看| 亚洲人成人99网站| 欧美午夜精品理论片a级大开眼界| 亚洲图片欧洲图片av| 国产在线不卡视频| 亚洲一区国产精品| 国产视频一区在线观看| 日韩视频在线免费| 在线观看91精品国产入口| 亚洲国产精品成人| 欧美精品大片| 国产精品久久久久999| 欧美高清在线精品一区| 欧美亚州一区二区三区| 久久精品中文| 亚洲自拍都市欧美小说| 欧美—级高清免费播放| 亚洲精品美女91| 亚洲一区二区三区视频播放| 狠狠综合久久av一区二区小说| 永久91嫩草亚洲精品人人| 国产精品激情| 亚洲欧美日韩一区二区在线| 亚洲精品久久久蜜桃| 欧美精品www| 狠狠色噜噜狠狠狠狠色吗综合| 国产综合第一页| 久久精品女人| 久久久无码精品亚洲日韩按摩| 亚洲国产日韩欧美综合久久| 在线观看91久久久久久| 欧美华人在线视频| 黄色在线一区| 欧美日韩国产123| 欧美激情在线免费观看| 国产精品丝袜白浆摸在线| 国产欧美日韩一区二区三区在线| 亚洲盗摄视频| 夜夜嗨网站十八久久| 午夜影视日本亚洲欧洲精品| 国产精品一级二级三级| 欧美成人久久| 国产精品视频第一区| 亚洲午夜国产一区99re久久| 韩国精品久久久999| 午夜精彩视频在线观看不卡| 国产精品一区二区女厕厕| 狠狠色噜噜狠狠狠狠色吗综合| 国产精品美女一区二区在线观看| 亚洲国产一成人久久精品| 国产亚洲欧美色| 国产在线精品成人一区二区三区| 亚洲在线播放电影| 国产香蕉97碰碰久久人人| 欧美视频在线观看免费网址| 亚洲精品国产精品久久清纯直播| 日韩一级视频免费观看在线| 欧美日韩一区二区三区免费看| 久久亚洲私人国产精品va| 久久综合久久综合九色| 亚洲国产精品高清久久久| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品日韩在线播放| 欧美日韩国产综合在线| 久久九九免费| 在线观看日韩欧美| 黄色成人91| 欧美一区二区三区在线看| 欧美精品久久久久久久久老牛影院| 国产视频一区欧美| 国产精品午夜国产小视频| 亚洲欧美日韩一区二区| 美女啪啪无遮挡免费久久网站| 亚洲宅男天堂在线观看无病毒| 亚洲福利视频网站| 男女精品网站| 欧美 日韩 国产在线| 欧美激情一区二区三区在线| 99国产精品久久久久老师| 久久久精品午夜少妇| 久久精品亚洲国产奇米99| 国产日韩精品一区二区浪潮av| 激情综合网激情| 亚洲一区美女视频在线观看免费| 99国产精品99久久久久久粉嫩| 伊人久久婷婷色综合98网| 一区视频在线| 国产精品日韩专区| 欧美视频一区二区三区| 一区二区在线视频观看| 欧美一级视频免费在线观看| 欧美日韩在线三区| 国产亚洲精品综合一区91| 欧美国产亚洲视频| 亚洲高清免费| 免费久久精品视频| 久久在精品线影院精品国产| 亚洲精品国产精品国自产在线| 极品av少妇一区二区| 欧美成在线观看| 亚洲综合日韩中文字幕v在线| 欧美极品欧美精品欧美视频| 在线一区免费观看| 亚洲视频香蕉人妖| 玉米视频成人免费看| 精品不卡视频| 久久综合亚州| 一本久道综合久久精品| 亚洲国产va精品久久久不卡综合| 日韩亚洲一区二区| 韩日欧美一区| 亚洲第一综合天堂另类专| 亚洲视频香蕉人妖| 一区二区免费在线视频| 久久国产夜色精品鲁鲁99| 亚洲一区中文| 午夜精品短视频| 亚洲视频中文字幕| 国产精品久久久久久亚洲调教| 午夜精品婷婷| 国产精品福利片| 久久久www成人免费毛片麻豆| 欧美日韩亚洲综合一区| 国产在线视频不卡二| 亚洲国产精品综合| 国产精品一区一区| 国产精品sss| 久久久久久久一区二区三区| 国产专区综合网| 国产精品成人观看视频免费| 宅男66日本亚洲欧美视频| 香蕉久久夜色精品国产| 亚洲第一搞黄网站| 欧美激情乱人伦| 久久久国产一区二区| 国产日韩精品在线| 欧美成在线观看| 欧美在线综合视频| 国产精品久久久久aaaa| 久久久久久9| 每日更新成人在线视频| 久久精品国产一区二区三| 欧美精品观看| 亚洲无亚洲人成网站77777| 久久久久网站| 国产欧美一区二区三区视频| 久久精精品视频| 国产精品福利久久久| 欧美成人一品| 91久久中文| 欧美日本韩国一区| 久久久久久久一区二区| 国产精品亚洲综合| 国产精品theporn| 日韩亚洲欧美成人一区| 欧美日韩精品一本二本三本| 欧美精品啪啪| 亚洲视频在线观看| 欧美黄污视频| 久久久久看片| 亚洲精品一区二区三区蜜桃久| 欧美日韩在线直播| 在线精品国精品国产尤物884a| 久久久久久91香蕉国产| 欧美日韩亚洲一区二区三区| 亚洲美女诱惑| 午夜免费在线观看精品视频| 国产精品毛片大码女人| 性欧美精品高清| 国产欧美 在线欧美| 国产拍揄自揄精品视频麻豆| 欧美性事免费在线观看| 久久免费国产| 在线欧美小视频| 国产视频一区二区三区在线观看| 裸体一区二区三区| 欧美久久久久久久久久| 欧美va亚洲va国产综合| 亚洲毛片在线免费观看| 日韩视频一区二区三区在线播放免费观看| 久久福利电影| 狠狠狠色丁香婷婷综合激情| 久久国产主播精品| 亚洲伦理中文字幕| 老鸭窝亚洲一区二区三区| 国产网站欧美日韩免费精品在线观看| 禁断一区二区三区在线| 欧美一区二区成人6969| 久久精品一本久久99精品| 国产欧美精品国产国产专区| 国产老女人精品毛片久久| 国产精品午夜av在线| 99在线热播精品免费| 一区二区三区四区五区精品视频| 久久综合九色99| 欧美精品情趣视频| 国产精品区免费视频| 亚洲春色另类小说| 欧美gay视频| 欧美日韩精品伦理作品在线免费观看| 亚洲欧美卡通另类91av| 亚洲线精品一区二区三区八戒| 在线观看中文字幕不卡| 亚洲国产美女| 国产精品社区| 亚洲成人在线免费| 免费欧美视频| 欧美三日本三级少妇三2023| 欧美69视频|