SQL 語句的解析過程

2021-09-02 23:29:44 字數 2029 閱讀 7747

由於最近需要做一些

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等,錯誤資訊中如果包含一列...