前幾天在這個問題上栽了,所以寫下來紀念一下:
sql語句的執行步驟
一條sql語句的處理過程要經過以下幾個步驟。
1 [b]語法分析[/b] 分析語句的語法是否符合規範,衡量語句中各表示式的意義。
2 [b]語義分析[/b] 檢查語句中涉及的所有資料庫物件是否存在,且使用者有相應的許可權。
3 [b]檢視轉換[/b] 將涉及檢視的查詢語句轉換為相應的對基表查詢語句。
4 [b]表示式轉換[/b] 將複雜的sql表示式轉換為較簡單的等效連線表示式。
5 [b]選擇優化器[/b] 不同的優化器一般產生不同的「執行計畫」
6 [b]選擇連線方式[/b] oracle有三種連線方式,對多表連線oracle可選擇適當的連線方式。
7 [b]選擇連線順序[/b] 對多表連線oracle選擇哪一對表先連線,選擇這兩表中哪個表做為源資料表。
8 [b]選擇資料的搜尋路徑[/b] 根據以上條件選擇合適的資料搜尋路徑,如是選用全表搜尋還是利用索引或是其他的方式。
9 [b]執行「執行計畫[/b]」
Oracle SQL語句執行步驟
oracle中sql語句執行過程中,oracle內部解析原理如下 1 當一使用者第一次提交乙個sql表示式時,oracle會將這sql進行hard parse,這過程有點像程式編譯,檢查語法 表名 欄位名等相關資訊 如下圖 這過程會花比較長的時間,因為它要分析語句的語法與語義。然後獲得最優化後的執行...
執行sql語句 檢視SQL語句執行進度資訊
有時候我們跑乙個語句,若修改大表或查詢量很大時候,不知道執行到什麼程度了,什麼時候能執行完成,在5.7版後可以查詢sys.session來觀察 select from sys.session where conn id connection id 模擬對乙個大表執行了alter操作 alter ta...
sql語句如何執行的
mysql 主要分為 server 層和引擎層,server 層主要包括聯結器 查詢快取 分析器 優化器 執行器,同時還有乙個日誌模組 binlog 這個日誌模組所有執行引擎都可以共用,redolog 只有 innodb 有。引擎層是外掛程式式的,目前主要包括,myisam,innodb,memor...