Oracle資料庫Where條件執行順序

2021-05-22 07:55:56 字數 738 閱讀 6442

1.oracle採用自下而上的順序解析where子句,根據這個原理,表之間的連線必須寫在其他where條件之前, 那些可以過濾掉最大數量記錄的條件必須寫在where子句的末尾.

例如:

(低效)

select … from emp e where sal > 50000 and job = 『manager』 and 25 < (select count(*) from emp where mgr=e.empno);

(高效)

select … from emp e where 25 < (select count(*) from emp where mgr=e.empno) and sal > 50000 and job = 『manager』;

2.select子句中避免使用』*』

當在select子句中列出所有的column時,使用動態sql列引用 『*』 是乙個方便的方法.可是,這是乙個非常低效的方法. 實際上,oracle在解析的過程中, 會將』*』 依次轉換成所有的列名, 這個工作是通過查詢資料字典完成的, 這意味著將耗費更多的時間.

3.使用表的別名(alias)

當在sql語句中連線多個表時, 請使用表的別名並把別名字首於每個column上.這樣一來,就可以減少解析的時間並減少那些由column歧義引起的語法錯誤.

注:column歧義指的是由於sql中不同的表具有相同的column名,當sql語句中出現這個column時,sql解析器無法判斷這個column的歸屬

Oracle資料庫Where條件執行順序

由於sql優化起來比較複雜,並且還會受環境限制,在開發過程中,寫sql必須必須要遵循以下幾點的原則 1.oracle採用自下而上的順序解析where子句,根據這個原理,表之間的連線必須寫在其他where條件之前,那些可以過濾掉最大數量記錄的條件必須寫在where子句的末尾.即 最大地減少資料範圍的條...

資料庫left join中on和where條件區別

oracle的left join中on和where的區別 1,說明 oracle資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用leftjion時,on和where條件的區別如下 1 on條件是在生成臨時表時使用的條件,它不管on中的條件是否...

oracle資料庫賦權 Oracle資料庫許可權

oracle資料庫許可權基本認識 一 oracle許可權 oracle系統提供三種許可權 object 物件級 system 系統級 role 角色級。許可權分類 1 系統許可權 系統規定使用者使用資料庫的許可權。系統許可權是對使用者而言 2 實體許可權 某種許可權使用者對其它使用者的表或檢視的訪問...