由於最近需要做一些
sql query
效能提公升的研究,因此研究了一下
sql語句的解決過程。在園子裡看了下,大家寫了很多相關的文章,大家的側重點各有不同。本文是我在看了各種資料後收集總結的,會詳細的,一步一步的講述乙個
sql
一、sql語句的解析順序
簡單的說乙個
sql語句是按照如下的順序解析的:
二、from子句
from
子句標識了需要查詢的表,如果指定了表操作,會從左到右的處理,每乙個基於乙個或者兩個表的表操作都會返回乙個輸出表。左邊表的輸出結果會作為下乙個表操作的輸入結果。例如,交表相關的操作有
(1-j1)
笛卡爾積,
(1-j2)on
過濾器,
(1-j3)
新增外部列。
from
句子生成虛擬表
vt1。
1、執行笛卡爾積(cross join)
笛卡爾積會把左右兩個表每一行所有可能的組合都列出來生成表
vt1-j1
,如果左表有
m列,右表有
n列,那麼笛卡爾積之後生成的
vt1-j1
表將會有
m×n列。
step 1-j1
這個步驟等價於執行:
select * from customers c cross join orders o
執行結果為:(共有
4×7列)
c.customerid
c.city
o.orderid
o.customerid
fissa
madrid
1frndo
fissa
madrid
2frndo
fissa
madrid
3krlos
fissa
madrid
4krlos
fissa
madrid
5krlos
fissa
madrid
6mrphs
fissa
madrid
7null
frndo
madrid
1frndo
frndo
madrid
2frndo
frndo
madrid
3krlos
frndo
madrid
4krlos
frndo
madrid
5krlos
frndo
madrid
6mrphs
frndo
madrid
7null
krlos
madrid
1frndo
krlos
madrid
2frndo
krlos
madrid
3krlos
krlos
madrid
4krlos
krlos
madrid
5krlos
krlos
madrid
6mrphs
krlos
madrid
7null
mrphs
zion
1frndo
mrphs
zion
2frndo
mrphs
zion
3krlos
mrphs
zion
4krlos
mrphs
zion
5krlos
mrphs
zion
6mrphs
mrphs
zion
7null
Oracle SQL語句解析過程
目錄 oracle sql語句解析過程 1 軟硬解析 2 sql解析過程 sql語句在到達oracle例項後,需要先進行解析,分析出最優的執行計畫後,再按照執行計畫,開始執行sql。根據能否復用執行計畫,解析過程可以分析以下兩大類 注意 oracle中只有完全相同的語句,包大小寫 空格 換行都要求一...
SQL基礎語句解析
sql structuredquerylanguage 語句又叫結構化查詢語言,適用於關係型據庫比如mysql,oracle,sqlserver等資料庫.ddl 資料定義語言 用於運算元據庫和表 dml 資料操作語言 用於操作表中的記錄 dql 資料查詢語言 用於查詢表中的記錄 dcl 資料控制語言...
SQL語句的執行過程
1.語法校驗 如果在sql計畫快取中沒有對應的執行計畫,伺服器首先會對使用者請求的sql語句進行語法效驗,如果有語法錯誤,伺服器會結束查詢操作,並用返回相應的錯誤資訊給呼叫它的應用程式。注意 此時返回的錯誤資訊中,只會包含基本的語法錯誤資訊,例如select 寫成selec等,錯誤資訊中如果包含一列...