一條SQL查詢語句是如何執行的

2021-09-18 08:10:28 字數 971 閱讀 8680

mysql可以分為server層和儲存引擎層兩部分

一條普通的查詢語是怎樣執行並返回結果了

聯結器查詢快取

大多數情況下建議不要使用查詢快取,查詢快取往往弊大於利。查詢快取的失效非常頻繁,只要有對乙個表的更新,這個表上所有的查詢快取都會被清空。

分析器優化器

比如你執行下面這樣的語句,這個語句是執行兩個表的join:

mysql> select * from t1 join t2 using(id) where t1.c=10 and t2.d=20;

執行器

mysql> select * from t where id=10;比如我們這個例子中的表t中,id欄位沒有索引,那麼執行器的執行流程是這樣的:

呼叫innodb引擎介面取這個表的第一行,判斷id值是不是10,如果不是則跳過,如果是則將這行存在結果集中;

呼叫引擎介面取「下一行」,重複相同的判斷邏輯,直到取到這個表的最後一行。

執行器將上述遍歷過程中所有滿足條件的行組成的記錄集作為結果集返回給客戶端

參考:mysql實戰45講

一條SQL查詢語句是如何執行的?

我們在寫sql的時候crud這些基本的操作想必大家已經是得心應手了,專欄會更傾向於sql優化與執行過程模型的角度重新學習sql,方便大家在做效能優化上更加熟練。select from t where id 10 接下來我們來拆解一下這個sql語句,從中就可以看出sql在mysql中各個模組的執行過程...

一條SQL查詢語句是如何執行的

大體來說,mysql分為 server 層和儲存引擎層,server 層有聯結器 分析器 優化器 執行器和查詢快取 其中,客戶端發出請求與聯結器建立連線並獲取許可權,分析器對sql語句做分析並判斷是否正確 優化器決定使用哪個索引,生成執行計畫,決定多表連線中表的連線順序。執行器執行語句,操作儲存引擎...

一條SQL查詢語句是如何執行的

server層包括聯結器 查詢快取 分析器 優化器 執行器等,涵蓋了mysql的大多數核心服務功能以及所有的內建函式,所有跨儲存引擎的功能都在這一層實現,比如儲存過程 觸發器 檢視等。而儲存引擎層負責資料的儲存與提取。其架構模式是外掛程式式的,支援innodb myisam memory等多個儲存引...