佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Oracle提高SQL執(zhí)行效率的3種方法

Oracle提高SQL執(zhí)行效率的3種方法

熱門標(biāo)簽:網(wǎng)站排名優(yōu)化 AI電銷 呼叫中心市場需求 服務(wù)外包 百度競價排名 鐵路電話系統(tǒng) Linux服務(wù)器 地方門戶網(wǎng)站
Oracle提供了多種方法用于減少花在剖析Oracle SQL表達(dá)式上的時間,在執(zhí)行帶有大量執(zhí)行計(jì)劃的復(fù)雜查詢時剖析過程會拖累系統(tǒng)的性能。現(xiàn)在我們來簡要地看看這些方法中的幾種。

1、使用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子句所列出的順序來評估表格。

2、使用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)行判斷評估的順序。

3、限制表格合并評估的數(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提示就會被光顧。
您可能感興趣的文章:
  • sql格式化工具集合
  • SQL查詢效率注意事項(xiàng)小結(jié)
  • mysql格式化小數(shù)保留小數(shù)點(diǎn)后兩位(小數(shù)點(diǎn)格式化)
  • SQL Server中的SQL語句優(yōu)化與效率問題
  • C++操作MySQL大量數(shù)據(jù)插入效率低下的解決方法
  • C#適用于like語句的SQL格式化函數(shù)
  • 提高M(jìn)ySQL中InnoDB表BLOB列的存儲效率的教程
  • 通過格式良好的SQL提高效率和準(zhǔn)確性

標(biāo)簽:黃山 湘潭 湖南 銅川 衡水 崇左 仙桃 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle提高SQL執(zhí)行效率的3種方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    雅安市| 南汇区| 阿克陶县| 望城县| 北安市| 绥芬河市| 莆田市| 漠河县| 陇西县| 姚安县| 临安市| 天气| 万州区| 平邑县| 汉中市| 长兴县| 璧山县| 甘泉县| 庆阳市| 双鸭山市| 邹城市| 盈江县| 都兰县| 晋中市| 湛江市| 额敏县| 乌恰县| 北辰区| 丰县| 甘泉县| 永登县| 龙口市| 衡水市| 大理市| 溧水县| 武威市| 张家界市| 富裕县| 民权县| 东乡| 苍梧县|