Oracle資料庫最佳化策略總結篇_oracle

來源:互聯網
上載者:User

為了提高查詢效率,我們常常做一些最佳化策略。本文主要介紹一些Oracle資料庫的一些不常見卻是非常有用的最佳化策略,希望能對您有所協助。

SQL語句最佳化

這個好辦,抓到挪借CPU高的SQL語句,依據索引、SQL技巧等修改一下,行之管用。

SELECT時不利用函數

在做頻繁的查詢壟斷時,盡量直接select欄位名,然後利用C語言代碼對查詢收穫做二次加工,避免讓Oracle來做混雜的函數可能數學計算。因為Oracle出於通用性的琢磨,其函數及數學計算的速度遠不及用C語言直接編譯成機器碼後計算來的快。

綁定變數

這個能夠大幅度減退SQL的“hard parse”,我們大局部過程都曾經告終了變數綁定。個別未曾告終的,修正一下,也能很快看到收穫。

批量FETCH

萬一順次select會歸來多條(幾百、上千)登記,利用批量Fetch,例如順次fetch 1000條登記,要比一條條的fetch資料快的多,也能夠管用減退oracle的壓力。

批量提交

順次修正多條(例如小於10000條左右)登記,然後順次性提交,要比每條提交順次快的多。當然前提是商務邏輯批准這麼做。

批量增刪改

萬一必需順次性修正可能剔除多條登記,能夠批准批量數組綁定的措施,這個和前面說得“綁定變數”相仿,差異是前者綁定的是一個變數,這裡綁定的是一個大數組的首指標,這種措施要比逐條綁定厲行快的多。

SQL預解析

前面的大局部是批量壟斷,還有一種常見的情境是小事務壟斷,但頻率極其高nextplas.com。這種情境等閑SQL也不混雜,幾乎未曾最佳化的餘地了,然而由於壟斷頻繁,同樣會構成CPU居高不下。現在我們的過程大局部都是下面這個利用形式:

loop  parse sql;  bind var;  execute sql;  end loop; 

固然我們利用了綁定變數的措施,然而由於壟斷頻繁,同樣構成許多的“soft parse”以及網路通訊。在記憶體資料庫中,我們等閑批准預解析的措施來長進效率,事實上,Oracle很早就給開發人員供給這種形式,只是開發人員嫌繁瑣沒利於用而已。將過程改成下列形式:

parse sql;  bind var;  loop  execute sql;  end loop; 

這麼就能夠管用減退Oracle的壓力,能夠將厲行效率起碼長進一倍。然而這種形式波及到過程構造的改變,定然在設計階段就這麼做。否則,後期再調劑的話,危險和工作量都會很大。

SQL語句的一些最佳化措施

1、SQL語句用大寫的;因為Oracle總是先解析SQL語句,把小寫字母轉換成大寫的再厲行。

2、避免在索引列上利用NOT等閑,我們要避免在索引列上利用NOT, NOT會發生在和在索引列上利用函數雷同的波及。

3、當Oracle“碰到”NOT,他就會靜止利用索引轉而厲行全表掃描。

4、避免在索引列上利用計算。WHERE子句中,假定索引列是函數的一局部。最佳化器將不利用索引而利用全表掃描。

5、盡量少用DISTINCT壟斷,用EXISTS輪換DISTINCTvalues should never be negative。

以上就是Oracle資料庫的最佳化策略的全部,如果您想瞭解更多關於Oracle資料庫的知識,那就關注Oracle資料庫欄目,相信會對您有所收穫的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.