国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

在Oracle里加快SQL執(zhí)行的三種方法

2024-08-29 13:38:59
字體:
供稿:網(wǎng)友

  Oracle提供了多種方法用于減少花在剖析Oracle SQL表達(dá)式上的時間,在執(zhí)行帶有大量執(zhí)行計(jì)劃的復(fù)雜查詢時剖析過程會拖累系統(tǒng)的性能。現(xiàn)在我們來簡要地看看這些方法中的幾種。
  
  
  使用ordered提示
  
  
  
  Oracle必須花費(fèi)大量的時間來剖析多表格的合并,用以確定表格合并的最佳順序。假如SQL表達(dá)式涉及七個乃至更多的表格合并,那么有時就會需要超過30分鐘的時間來剖析,因?yàn)镺racle必須評估表格合并所有可能的順序。八個表格就會有40,000多種順序。Ordered這個提示(hint)和其他的提示一起使用能夠產(chǎn)生合適的合并順序。
  
  Ordered這個提示會要求列在SQL表達(dá)式FROM字句里的表格按照指定的順序進(jìn)行合并,F(xiàn)ROM字句里的第一個表格會指定驅(qū)動表格(driving table)。驅(qū)動表格應(yīng)該是返回最小行數(shù)的表格。使用ordered提示會跳過非常耗時和耗資源的剖析操作,并加快Oracle SQL的執(zhí)行。
  
  Listing A如下:
  Listing A
  
  
  select /*+ ordered use_nl(bonus) parallel(e, 4) */ e.ename, hiredate, b.comm from emp e, bonus b where e.ename = b.ename ;
  
  Listing A里是一個復(fù)雜查詢的例子,這個查詢被強(qiáng)制進(jìn)行一個嵌套循環(huán),從而與對emp表格進(jìn)行的并行查詢合并。要注重,我已經(jīng)使用ordered提示來引導(dǎo)Oracle去按照WHERE子句所列出的順序來評估表格。
  
  
  
  使用theordered_PRedicates
  
  ordered_predicates提示在查詢的WHERE子句里指定的,并被用來指定布爾判定(Boolean predicate)被評估的順序。在沒有ordered_predicates的情況下,Oracle會使用下面這些步驟來評估SQL判定的順序:
  
  子查詢的評估先于外層WHERE子句里的Boolean條件。
  所有沒有內(nèi)置函數(shù)或者子查詢的布爾條件都按照其在WHERE子句里相反的順序進(jìn)行評估,即最后一條判定最先被評估。
  每個判定都帶有內(nèi)置函數(shù)的布爾判定都依據(jù)其預(yù)計(jì)的評估值按遞增排列。
  你可以使用ordered_predicates提示來強(qiáng)制取代這些缺省的評估規(guī)則,那么你WHERE子句里的項(xiàng)目就會按照其在查詢里出現(xiàn)的順序被評估。在查詢的WHERE子句里使用了PL/SQL函數(shù)的情況下,通常會使用ordered_predicates提示。假如你知道限制最多的判定并且希望Oracle最先評估這些判定的時候,在這種情況下,它也是非常有用的。
  
  
  
  用法提示:
  你不能使用ordered_predicates提示來保存對索引鍵進(jìn)行判定評估的順序。
  
  
  
  限制表格合并評估的數(shù)量
  
  提高SQL剖析性能的最后一種方法是強(qiáng)制取代Oracle的一個參數(shù),這個參數(shù)控制著在評估一個查詢的時候,基于消耗的優(yōu)化器所評估的可能合并數(shù)量。optimizer_search_limit這個參數(shù)會指定表格合并組合的最大數(shù)量,后者將會在Oracle試圖確定合并多表格最佳方式的時候被評估。這個參數(shù)有助于防止優(yōu)化器花更多的時間來評估可能的合并順序,而不是把時間花在尋找最佳合并順序上。optimizer_search_limit還控制著用于調(diào)用star join提示的闕值,當(dāng)查詢里的表格數(shù)量低于optimizer_search_limit(其缺省的值是5)的時候,star提示就會被光顧。
  
  
  
  關(guān)于優(yōu)化器參數(shù)的更多信息
  要獲得更多關(guān)于用于復(fù)雜查詢最大性能調(diào)試的Oracle優(yōu)化器的信息,見 《使用智能優(yōu)化器極限提高Oracle的性能》 。
  
  
  
  以上只是一些Oracle DBA用來優(yōu)化Oracle數(shù)據(jù)庫應(yīng)用程序SQL查詢的性能的一些小技巧。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 深泽县| 毕节市| 景洪市| 潢川县| 库尔勒市| 梨树县| 临沭县| 宁德市| 六安市| 永仁县| 孟村| 项城市| 双鸭山市| 京山县| 镇宁| 集安市| 安丘市| 白朗县| 壤塘县| 临武县| 延吉市| 横山县| 凤山市| 襄樊市| 尉犁县| 英超| 汽车| 桦川县| 汾阳市| 什邡市| 霍州市| 上虞市| 垣曲县| 遵义县| 宽甸| 华容县| 尼勒克县| 峡江县| 柳州市| 南平市| 邵东县|