oracle中的sql是如何執行的:
1、語法檢查,如有錯誤,則報語法錯誤
2、語義檢查,如列不存在,表不存在等
3、許可權檢查
4、共享池檢查:
1、作用是快取sql語句和語句的執行計畫
2、首先對sql語句進行hash計算,根據hash值查詢是否在共享池中,如果有則是軟解析,直接執行
3.不存在共享池中,跳到第5步,硬解析。
5、優化器:執行硬解析,建立解析樹,生成執行計畫
6、根據解析樹和執行計畫執行
如何避免硬解析?
繫結變數,如:
一般情況查詢:select * from player where player_id = 10001;
繫結變數查詢:select * from player where player_id = :player_id;
問,繫結變數該如何操作?
答:儲存過程中
l_param1:=『a』;l_param2:=『b』;
l_sql:='select count(*) into :x from table1 where col_1=:y and col_2=:z ';
execute immediate l_sql into l_count using l_param1,l_param2;
例2:variable i number; – 定義變數
exec :i :=1; – 賦值
select * from t where id=:i – 查詢(繫結變數)
select sql_text,parse_calls from v$sql where sql_text like 『select * from t where id=%』 – 查詢解析
ddl:資料庫定義語言,create、drop、alert
dml:資料庫操作語言,增刪改查
dcl:資料控制語言:用於定義資料庫使用者的許可權
oracle sql 解析過程
解析有兩種 硬解析和軟解析 parse 1 從共享池的庫緩衝區中搜尋,該語句是否曾經執行過,凡是執行過的sql語句,oracle會使用hash函式進行計算,產生乙個很小的文字記錄,如果是第一次執行,則進入第二步。2 檢查語句 許可權等等 許可權資訊是存放在oracle的資料字典中,oracle先從共...
Oracle SQL語句解析過程
目錄 oracle sql語句解析過程 1 軟硬解析 2 sql解析過程 sql語句在到達oracle例項後,需要先進行解析,分析出最優的執行計畫後,再按照執行計畫,開始執行sql。根據能否復用執行計畫,解析過程可以分析以下兩大類 注意 oracle中只有完全相同的語句,包大小寫 空格 換行都要求一...
Oracle SQL的硬解析 軟解析 軟軟解析
oracle中每條sql在執行前都要解析,解析分為硬解析 軟解析 軟軟解析。oracle會快取dml語句,相同的dml語句會進行軟解析。但不會快取ddl語句,所以ddl每次都做硬解析。硬解析是乙個很耗時的操作,所以應用程式內部很少執行執行ddl。ddl一般在部署前執行。sql語句執行步驟 1.語法檢...