?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

網賭新浦金可靠嗎:Oracle中的優化器如何進行評估優化(1)Oracle優化

?

Oracle優化器在任何可能的時刻都邑對表達式進行評估,并且把特定的語法布局轉換成等價的布局,這么做的緣故原由是:

·要么結果表達式能夠比源表達式具有更快的速率。

·要么源表達式只是結果表達式的一個等價語義布局。

不合的SQL布局無意偶爾具有同樣的操作(例如:= ANY (subquery) and IN (subquery)),Oracle會把他們映射到一個單一的語義布局。

下面將評論爭論優化器若何評估優化如下的環境和表達式:

常量 LIKE 操作符 IN 操作符 ANY和SOME 操作符 ALL 操作符 BETWEEN 操作符 NOT 操作符

通報(Transitivity) 確定性(DETERMINISTIC)函數

常量

常量的謀略是在語句被優化時一次性完成,而不是在每次履行時。下面是檢索月薪大年夜于2000的的表達式:  &middo網賭新浦金可靠嗎t; sal > 24000/12

· sal > 2000

· sal*12 > 24000

假如SQL語句包括第一種環境,優化器會簡單地把它改變成第二種。

留意:優化器不會簡化超過對照符的表達式,例如第三條語句,鑒于此,利用法度榜樣開拓者應該只管即便寫用常量跟字段對照檢索的表達式,而不要將字段置于表達式傍邊。

LIKE 操作符

優化器把應用LIKE操作符和一個沒有通配符的表達式組成的檢索表達式轉換為一個“=”操作網賭新浦金可靠嗎符表達式。

例如:優化器會把表達式ename LIKE 'SMITH'轉換為ename = 'SMITH'優化器只能轉換涉及到可變網賭新浦金可靠嗎長數據類型的表達式,前一個例子中,假如ENAME字段的類型是CHAR(10), 那么優化器將不做任何轉換。

IN 操作符

優化器把應用IN對照符的檢索表達式調換為等價的應用“=”和“OR”操作符的檢索表達式。例如,優化器會把表達式ename IN ('SMITH','KING','JONES')調換為:  ename = 'SMITH' OR ename = 'KING' OR ename = 'JONES'

ANY和SOME 操作符

優化器將跟隨(following)值列表的ANY和SOME檢索前提用等價的一致操作符和“OR網賭新浦金可靠嗎”組成的表達式調換。

例如,優化器將如下所示的第一條語句用第二條語句調換:  · sal > ANY (:first_sal, :second_sal)

· sal > :first_sal OR sal > :second_sal

優化器將跟隨子查詢的ANY和SOME檢索前提轉換成由“EXISTS”和一個響應的子查詢組成的檢索表達式。

例如,優化器將如下所示的第一條語句用第二條語句調換:  · x > ANY (SELECT sal FROM emp WHERE job = 'ANALYST')

&網賭新浦金可靠嗎middot; EXISTS (SELECT sal FROM emp WHERE job = 'ANALYST' AND x > sal)

ALL 操作符

優化器將跟隨值列表的ALL操作符用等價的“=”和“AND”組成的表達式調換。

例如,sal > ALL (:first_sal, :second_sal)表達式會被調換為:  sal > :first_sal AND sal > :second_sal

對付跟隨子查詢的ALL表達式,優化器用ANY和別的一個相宜的對照符組成的表達式調換。例如,優化器會把表達式 x > ALL (SELECT sal FROM emp WHERE deptno = 10) 調換為:  NOT (x

接下來優化器會把第二個表達式適用ANY表達式的轉換規則轉換為下面的表達式:  NOT EXISTS (SELECT sal FROM emp WHERE deptno = 10 AND x

BETWEEN 操作符

優化器老是用“>=”和“= 2000 AND sal <= 3000來代替。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

快三平台开户