查詢語句的處理主要包括三個過程:編譯(parse)、執行(execute)和提取數據(fetch)。 ...
Oracle執行SQL查詢語句的步驟
如果用戶在SQL*Plus下輸入瞭如下查詢語句:SELECT * FROM dept;
查詢語句的處理主要包括三個過程:編譯(parse)、執行(execute)和提取數據(fetch)。
l 編譯:在進行編譯時,伺服器進程將會將SQL語句的正文放入共用池(shared pool)的庫高速緩存(library cache)中並將完成以下處理。
首先在共用池中搜索是否有相同的SQL語句(正文),如果沒有就進行後續的處理。
檢查該SQL語句的語法是否正確。
通過查看數據字典來檢查表和列的定義。
對所操作的對象加編譯鎖(parse locks),以便在編譯語句期間,這些對象的定義不被改變。
檢查所引用對象的用戶許可權。
生成執行該SQL語句所需的優化和執行計劃(執行步驟)。
將SQL語句和執行計劃裝入共用SQL區。
以上的每一步操作都是在處理正確時才進行後續的處理。如果不正確,就返回錯誤。
l 執行:oracle伺服器進程開始執行SQL語句是因為它已獲得了執行的SQL語句所需要的全部資源和信息。
l 提取數據:oracle伺服器進程選擇所需的數據行,併在需要時將其排序,最後將結構返回給用戶(進程)。