自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle提高SQL執(zhí)行效率的3種實(shí)用方案簡介

數(shù)據(jù)庫 Oracle
以下的文章主要向大家講述的是Oracle提高SQL執(zhí)行效率的3種適用性很強(qiáng)的方法,以下就是文章的具體內(nèi)容分析,以下就是文章的具體內(nèi)容分析。

如果你想提高SQL在Oracle里的實(shí)際操作的執(zhí)行效率,首先你要想到的是優(yōu)化其實(shí)際的應(yīng)用業(yè)務(wù)邏輯,另外Oracle也提供了對(duì)技術(shù)層面實(shí)際應(yīng)用方法,以下的文章主要向你講述的Oracle提高SQL執(zhí)行效率3種好用的方法:

Oracle提供了多種方法用于減少花在剖析Oracle SQL表達(dá)式上的時(shí)間,在執(zhí)行帶有大量執(zhí)行計(jì)劃的復(fù)雜查詢時(shí)剖析過程會(huì)拖累系統(tǒng)的性能?,F(xiàn)在我們來簡要地看看這些方法中的幾種。

1、使用ordered提示

Oracle必須花費(fèi)大量的時(shí)間來剖析多表格的合并,用以確定表格合并的***順序。如果SQL表達(dá)式涉及七個(gè)乃至更多的表格合并,那么有時(shí)就會(huì)需要超過30分鐘的時(shí)間來剖析,因?yàn)镺racle必須評(píng)估表格合并所有可能的順序。八個(gè)表格就會(huì)有40,000多種順序。Ordered這個(gè)提示(hint)和其他的提示一起使用能夠產(chǎn)生合適的合并順序。

Ordered這個(gè)提示會(huì)要求列在SQL表達(dá)式FROM字句里的表格按照指定的順序進(jìn)行合并,F(xiàn)ROM字句里的***個(gè)表格會(huì)指定驅(qū)動(dòng)表格(driving table)。驅(qū)動(dòng)表格應(yīng)該是返回最小行數(shù)的表格。使用ordered提示會(huì)跳過非常耗時(shí)和耗資源的剖析操作,并加快Oracle SQL的執(zhí)行。

Listing A如下:

以下是引用片段:

 

  1. Listing A  
  2. select /*+ ordered use_nl(bonus)  
  3. parallel(e, 4) */ e.ename, hiredate, b.comm from emp e, bonus b  
  4. where e.ename = b.ename ;  

 

Listing A里是一個(gè)復(fù)雜查詢的例子,這個(gè)查詢被強(qiáng)制進(jìn)行一個(gè)嵌套循環(huán),從而與對(duì)emp表格進(jìn)行的并行查詢合并。要注意,我已經(jīng)使用ordered提示來引導(dǎo)Oracle去按照WHERE子句所列出的順序來評(píng)估表格。

2、Oracle提高SQL執(zhí)行效率的三種方法之二:使用theordered_predicates

ordered_predicates提示在查詢的WHERE子句里指定的,并被用來指定布爾判斷(Boolean predicate)被評(píng)估的順序。在沒有ordered_predicates的情況下,Oracle會(huì)使用下面這些步驟來評(píng)估SQL判斷的順序:

子查詢的評(píng)估先于外層WHERE子句里的Boolean條件。

所有沒有內(nèi)置函數(shù)或者子查詢的布爾條件都按照其在WHERE子句里相反的順序進(jìn)行評(píng)估,即***一條判斷***被評(píng)估。

每個(gè)判斷都帶有內(nèi)置函數(shù)的布爾判斷都依據(jù)其預(yù)計(jì)的評(píng)估值按遞增排列。

你可以使用ordered_predicates提示來強(qiáng)制取代這些缺省的評(píng)估規(guī)則,那么你WHERE子句里的項(xiàng)目就會(huì)按照其在查詢里出現(xiàn)的順序被評(píng)估。在查詢的WHERE子句里使用了PL/SQL函數(shù)的情況下,通常會(huì)使用ordered_predicates提示。

如果你知道限制最多的判斷并且希望Oracle***評(píng)估這些判斷的時(shí)候,在這種情況下,它也是非常有用的。用法提示:你不能使用ordered_predicates提示來保存對(duì)索引鍵進(jìn)行判斷評(píng)估的順序。

3、限制表格合并評(píng)估的數(shù)量

Oracle提高SQL剖析性能的***一種方法是強(qiáng)制取代Oracle的一個(gè)參數(shù),這個(gè)參數(shù)控制著在評(píng)估一個(gè)查詢的時(shí)候,基于消耗的優(yōu)化器所評(píng)估的可能合并數(shù)量。

optimizer_search_limit這個(gè)參數(shù)會(huì)指定表格合并組合的***數(shù)量,后者將會(huì)在Oracle試圖確定合并多表格***方式的時(shí)候被評(píng)估。這個(gè)參數(shù)有助于防止優(yōu)化器花更多的時(shí)間來評(píng)估可能的合并順序,而不是把時(shí)間花在尋找***合并順序上。optimizer_search_limit還控制著用于調(diào)用star join提示的闕值,當(dāng)查詢里的表格數(shù)量低于optimizer_search_limit(其缺省的值是5)的時(shí)候,star提示就會(huì)被光顧。

以上只是一些Oracle DBA用來優(yōu)化Oracle數(shù)據(jù)庫應(yīng)用程序SQL查詢的性能的一些小技巧。

【編輯推薦】

  1. Oracle移植到MySQL會(huì)碰到那些問題?
  2. Oracle 分頁和排序功能在數(shù)據(jù)庫中如何實(shí)現(xiàn)?
  3. Oracle字符集的查看與修改全集
  4. Oracle查詢記錄數(shù)在什么環(huán)境下會(huì)出現(xiàn)問題?
  5. Oracle建立DBLINK的操作經(jīng)驗(yàn)總結(jié)
責(zé)任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-04-29 15:43:17

2010-04-30 14:14:11

Oracle提高SQL

2010-04-29 12:46:42

Oracle SQL

2011-03-21 15:51:27

SQL執(zhí)行效率

2010-09-07 10:26:37

SQL語句

2010-04-13 15:14:31

Oracle優(yōu)化

2010-05-07 18:21:42

Oracle提高SQL

2010-11-15 16:46:49

Oracle查詢效率

2010-10-27 14:15:44

Oracle數(shù)據(jù)庫效率

2009-12-28 10:08:07

OracleSQLDevelope開發(fā)框架

2020-06-23 09:52:31

運(yùn)營效率首席信息官IT預(yù)算

2010-04-26 16:31:09

Oracle SQL

2010-10-25 10:55:11

Oracle函數(shù)索引

2010-03-31 17:40:15

Oracle SELE

2010-11-12 11:25:44

SQL SERVER視

2010-04-22 10:30:11

Oracle RAC

2010-11-18 10:06:16

Oracle數(shù)據(jù)庫性能

2019-12-12 15:07:44

虛擬機(jī)性能效率

2015-04-16 10:15:45

PHPPHP執(zhí)行效率PHP技巧

2021-07-19 09:18:55

IDEA插件工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)