oracle select執行順序的詳解

2022-09-24 17:54:09 字數 1071 閱讀 6758

sql select語句完整的執行順序:

1、from子句組裝來自不同資料來源的資料;

2、where子句基於指定的條件對記錄行進行篩選;

3、 by子句將資料劃分為多個分組;

4、使用聚集函式進行計算;

5、使用h**ing子句篩選分組;

6、計算所有的表示式;

7、使用order by對結果集進行排序。

oracle 語句提高查詢效率的方法

1:.. where column in(select * from ... wher程式設計客棧e ...);

2:... where exists (select 'x' from ...where ...);

第二種格式要遠比第一種格式的效率高wigpkrq。在oracle中可以幾乎將所有的in操作符子查詢改寫為使用exists的子查詢

使用exists,oracle系統會首先檢查主查詢,然後執行子查詢直到它找到第乙個匹配項,這就節省了時間

oracle系統在執行in子查詢時,首先執行子查詢,並將獲得的結果列表存放在在乙個加了索引的臨時表中

選擇最有效率的表名順序(只在基於規則的優化器中有效)

oracle的解析器按照從右到左的順序處理from子句中的表名,因此from子句中寫在最後的表(基礎表 dwigpkrqriving table)將被最先處理。在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。當oracle處理多個表時,會運用排序及合併的方式連線它們。首先,掃瞄第乙個表(from子句中最後的那個表)並對記錄進行派序,然後掃瞄第二個表(from子句中最後第二個表),最後將所有從第二個表中檢索出的記錄與第乙個表中合適記錄進行合併。

如果有3個以上的表連線查詢,那就需要wigpkrq選擇交叉表(intersection table)作為基礎表,交叉表是指那個被其他表所引用的表。

where子句中的連線順序

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

本文標題: oracle select執行順序的詳解

本文位址:

Spring interceptor執行順序

spring interceptor是按list的順序來執行的。如果某乙個interceptor直接return而不去呼叫invocation.proceed 獲得返回值的話,接下來的interceptor也不會要執行。例如 表的查詢和快取,應該先執行查詢cache,然後再判斷是否啟動事務進行查詢資...

HttpApplication事件執行順序

應用程式按照以下順序執行由 global.asax 檔案中定義的模組或使用者 處理的事件 1 beginrequest 在 asp.net 響應請求時作為 http 執行管線鏈中的第乙個事件發生 2 authenticaterequest 當安全模組已建立使用者標識時發生。注 authenticat...

MasterPage Page的事件執行順序

如果乙個page使用了乙個masterpage,2者之間事件的執行順序如下 masterpage控制項 init 事件。page控制項 init 事件。masterpage init 事件。page init 事件。page load 事件。masterpage load 事件。page控制項 lo...